Minecraft, even in single-player mode, has a server module and a client module. What you saw was a case of the server-side hanging. This can be cause by many things, but in the end most of them come down to infinite loops in processing. I'm using the term "infinite loop" in a very broad way here.
In your particular case, based on your mention of general load on your machine, I'd say this is most likely due to hitting your memory allocation cap. I'm guessing the memory for MC is running out, causing the java garbage collector to run, which normally would be able to clear up some old memory and then continue running the game again (this is usually what's happening when you get a temporary version like you mentioned, with the "can't keep up" message). But if there is too much RAM that is still in active use, it will never recover. I'd think this would cause the program to terminate, but I could be wrong. I haven't run into this issue myself.
I seem to remember seeing this happen on another thread, though I can't remember for sure if it was triggered by something infinite or not (for some reason "infinite cows" seems to be on the tip of my mind? Was too long ago to remember).
If you can do something to increase the RAM given to MC, or to decrease the RAM it is using, I'd suggest trying to do so. If you're running a texture pack or shaders, I would personally try disabling those first. They don't have an effect on gameplay, so if disabling them fixes the issue, you know it's just RAM, and not some mod breaking (probably).