What you would like is some sort of situation where the end user does not know about the split.
How can this be achieved?
First, make a reverse friend database.
Now you can split into, say, 4 equal parts. People's friends are visible as are the tables they are playing on, but nothing else from the other server. The only communication between the servers is across people's friends. I don't know but of 5000 people online I expect most friends list to be only 1 or 2% of all players, so keeping track of what they are doing should be okay. The information need not be 100% updated either, you can keep it on some hard drive that updates itself by scanning over all people on all servers updating every "add some time scale here (10 seconds? 1 minute?)".

Help
