NullPointerExceptions usually mean some kind of file corruption, possibly the player.dat file as mentioned. By "dumping crap", I meant pipes/quarries/nukes putting a lot of items on the ground all at once. That will kill any server.
64-bit Java will allow you to use much more memory, and use the memory more efficiently, than 32-bit ever could. That would be my first suggestion.