Cleaned up the states on the client-side, and the order in which information is requested from the server. The goal was to remove a race condition that occured when it took too long to interact with the server (not entirely sure how this came about...). It seems like this has fixed the problem.

Once the connection is established and the game is running, there are no problems. I have had the client crash while trying to connect to a remote server a couple of times, but reproducing it has been hard. I think I've tracked it down.