We have had the same problem.
When our youngest DS was little he wouldn't keep the covers on at all. If any part of him got cold at all he would scoot in his sleep trying to find warmth & needless to say, I wanted him to stay put in his bed. We had stopped using poly PJs by this time so blanket sleepers were out. Socks fell off in his sleep, pants legs scooted up his legs so his legs got cold, etc. It was getting frustrating trying to come up with a solution.
I was at WalMart one day & found a bunch of girls cotton tights on clearance & got a bright idea. I used the tights along with a tucked in 100% cotton turtle neck shirt. Problem solved. He stayed warm, the turtle neck stayed tucked in so he didn't have cold drafts up his back. The feet fit snug so his feet didn't slip around (he was around 4-5 y/o at the time) when he walked around although I made it a rule that he HAD to wear his slippers that had bottoms with good traction when he was up. Slippers with GOOD traction is a house rule & pet peeve of mine. The kids have slipped & fallen while sock footed & I once slipped & landed flat on my back, just avoiding smacking my head on the floor while wearing standard, moccasin type, suede bottom slippers.
It worked out great for him & we did that for 2-3 winters until he outgrew the tights & I couldn't find any more that would fit him. Actually, the 24 month size fit him that whole time. I just simply only used dark colored tights & picked the ones with the ribs going down the legs instead of cable knit so they didn't look so much like girls tights. If someone was over & I wanted it to look more like 'PJ's' I simply had him put a pair of pants on over the tights.
The other idea is to sew socks onto the bottoms of the long john type thermal pants or body suit.
HTH Blessings ~herbalmom