Meanwhile I've found out that it's a Jailbreak bug -- that GetPlayerIDHash() function I was talking about earlier doesn't return the right value prior to a certain point in the login process (it returns the server's ID before then). It'll be fixed with the upcoming Jailbreak patch.