First of all, thanks for coming to my aid! I'll tell you everything I can think of.
The server is not on the same system as the client. It's hosted via BeastNode, on a nice little plan with 2g of RAM. Up until we started having issues, it's been working flawlessly, and I had been planning to scale the RAM back a good bit.
I'm not using MCPC+ at this time; it's the latest version I could find on http://files.minecraftforge.net/ (Forge for 1.6.4, 9.11.1.965). I hope that was the right idea, but if not, I'm sure I can switch to running an MCPC+ server.
The view distance is set to 10.
When the client hangs, I often have trouble accessing the server console. Many times, even when the page loads, none of the buttons work, either, so no stopping the server or restarting it until it's done doing whatever it's doing while it's frozen up.
Sometimes, I do get errors, but they don't seem to occur when I have issues (aside from those nice generic "endOfStream" messages sometimes when we all get kicked). An example of some of the console activity:
28.05 22:38:57 [Server] INFO Disconnecting /173.255.228.22:55169: Protocol error
28.05 22:38:49 [Server] INFO java.io.IOException: Bad packet id 48
28.05 22:38:49 [Server] INFO /167.88.120.238:49274 lost connection
28.05 22:38:49 [Server] INFO at net.minecraft.network.TcpReaderThread.run(SourceFile:94)
28.05 22:38:49 [Server] INFO at net.minecraft.network.TcpConnection.func_74450_c(TcpConnection.java:549)
28.05 22:38:49 [Server] INFO Disconnecting /167.88.120.238:49274: Protocol error
28.05 22:38:49 [Server] INFO at net.minecraft.network.TcpConnection.func_74447_i(TcpConnection.java:325)
28.05 22:38:49 [Server] INFO at net.minecraft.network.packet.Packet.func_73272_a(Packet.java:149)
28.05 22:38:49 [Server] INFO java.io.IOException: Bad packet id 48
28.05 22:38:49 [Server] INFO /167.88.120.238:49083 lost connection
28.05 22:38:49 [Server] INFO Disconnecting /167.88.120.238:49083: Protocol error
28.05 22:38:49 [Server] INFO /167.88.120.238:49070 lost connection
28.05 22:38:49 [Server] INFO /167.88.120.238:48781 lost connection
28.05 22:38:49 [Server] INFO at net.minecraft.network.TcpReaderThread.run(SourceFile:94)
28.05 22:38:49 [Server] INFO at net.minecraft.network.TcpConnection.func_74450_c(TcpConnection.java:549)
28.05 22:38:49 [Server] INFO at net.minecraft.network.TcpConnection.func_74447_i(TcpConnection.java:325)
28.05 22:38:49 [Server] INFO at net.minecraft.network.packet.Packet.func_73272_a(Packet.java:149)
28.05 22:38:49 [Server] INFO java.io.IOException: Bad packet id 48
28.05 22:38:49 [Server] SEVERE Reached end of stream for /167.88.120.238
28.05 22:38:49 [Server] SEVERE Reached end of stream for /167.88.120.238
28.05 22:38:49 [Server] SEVERE Reached end of stream for /167.88.120.238
28.05 22:38:49 [Server] WARNING Can't keep up! Did the system time change, or is the server overloaded?
28.05 22:32:11 [Server] INFO at net.minecraft.network.TcpReaderThread.run(SourceFile:94)
That's just an example ... it pretty well always looks like that, when it's doing anything at all. I'm at a loss as to what's going on, but until we started having problems, everything was so smooth, I figured we could probably just let them go for a while. Which sounds terrible to me now, ha ha.
Another thing to note: just to rule out any possibility of anything having been built on the server that could cause problems, I went ahead and started a nice fresh world. Within about five minutes, as we were goofing off, smacking each other around, we got booted again.
I'm beginning to seriously suspect I need to talk to BeastNode about this, honestly, but I'm definitely interested in anything you or anyone else can contribute to this. I've never tried my hand at making a pack before, so I was expecting something to go wrong.