I'm wracking my brains....since it does not appear to be the need to go outside or water, etc. then something else is setting him off.
The only thing I can think of is to work on the "settle" command. Do this during the day. Get him all excited playing with a toy, then with treat in hand tell him to "settle". Grab him if necessary, and as soon as he stops squirming, wriggling, jumping on you, praise and treat. Then get him excited again, and then again "settle". Repeat over and over. Hopefully, when he starts this in the middle of the night, a "settle" coming from your pillow may get him to chill again. You might need to reinforce at night by having treats beside your bed.
Or you can try "down/stays" but I don't think I've ever asked my dog to go into a stay for 3-4 hours until he was the real time to wake up. But it it might distract him enough to get him to change his habit.
As a last resort, it would be back to the crate, I think.
Not much help here! I wish I could offer more.
Good luck! Reminds me of breastfeeding my newborns! I was exhausted, but at least was on maternity leave so I did not have to be "smart" the next day. Just non-comatose!