First of all, it's an interesting case you have

. Bit of a challenge, but fun.
Although your posted procedure looks like it will work, there's a lot of manipulating systemtables, and that's something you want to avoid as much as possible.
I assume you copy the databases with a dump/load-command?
How about the following process:
1: bcp-out the logins from the old servers (use flag -F<number> to specify the row at which to start, to skip sa & monuser)
2: recreate all logins needed from oldserver1. do not recreate the users, as they're already present in the loaded databases.
3: userdb..sysusers is probeblay mismatched. Using 'allow update', update sysusers.suid with the corresponding suid from master..syslogins, joinging both table on column 'name' (assuming loginname and username are identical)
At this point you should have the proper logins with matching users in the databases from oldserver1. All privileges granted to the users should be kept in place. Check that if needed/wanted.
4: bcp in the login-export from oldserver1 in a temporary table in newserver1 (either in masterdb or tempdb, doesnt matter too much).
5: using 'allow update', update master..sysusers, column password, with the proper value from the temptable. join the tables on name, not on suid. The suid is not necessarily the same, since you recreated the logins.
The logins should have the password from oldserver1 by now.
Repeat the steps above for oldserver
2 and it's databases. You probably will get errors creating logins that are already present from oldserver1. That is no problem, they wont be overwritten.
Be advised that when you get to step 5, you will overwrite the passwords of the logins that are present in both oldserver1 and oldserver2. The logins will end up with the password of oldserver2. Not really a problem, just something for the user to know.
Disclaimer: I haven't tested this myself, so be a little bit careful

.