I moved DS out to his own bed at around the same age for similar issues. I'd go for a bed, rather than a cot. Then get in with him until he's asleep and sneak out, just at first, you can always break this habit later.
First I made the bed really exciting, letting him have a bounce, choosing a Peppa Pig duvet, and he was really interested in it. Introduced the concept of bedtime stories for the first time, really. From the first day if I asked him where he wanted to sleep he'd say his bed, which was another sign I took that he was ready.
At first I used to go to him if he woke in the night and feed him back to sleep and lie with him until he was asleep, then sneak out (or fall asleep there myself!) - this was extremely wearing and went on for a few weeks, then I realised it was ridiculous, I wasn't getting any sleep at all, so I changed it and said to him before he fell asleep "If you wake up in the night and you need me, come and find me. I'll be in my bedroom." of course he didn't remember this the first few times and lay there crying, so I called out to him through the house "DS, I'm in here, come through" - okay noisy and probably loud enough for the neighbours to hear, but no more so than him crying. He would come through and usually be sleepy enough to go back to sleep with no wriggling etc.
I found that him having to actually get up to find me seemed to cut down a lot of the wakings, I suspect that he woke briefly a few times and just dropped back off by himself knowing that if he wanted me I was somewhere easily accessible. In fact within a couple of months he consistently slept 12 hours 
I also got a lot tougher on the not messing around when I was putting him to bed, any of the annoying behaviour like kicking etc I would stop feeding him and tell him "stop kicking" (etc) after a while you can spot even the tiniest change in their body language which means they're hyped up rather than relaxing (or perhaps it's just DS having only two settings...) and after a while I was able to just tell him "Calm down and lie still, or I will go downstairs." This also applies during stories - laughing at the story etc is of course fine but there's a difference between enjoying a story and being totally hyper, jumping around, fidgeting constantly etc. You of course have to follow through on going downstairs but I would do it in stages giving him a chance to redeem his behaviour, first I'd sit up, then get out of bed, then stand by the door, then go. Just for a couple of minutes to give me a chance to stay calm and him a chance to get the angry screaming bit out of his system. Horrible side effect :( but normally the screaming bit does actually exhaust them and make it easier to get them to sleep when you do come back up.
Anyway the point of this exercise is for him to realise that the wriggly, pinchy, kicky behaviour isn't what you do when you're in bed. I found with DS there was no middle ground, if he was completely still, he was relaxed enough to sleep, if he was still doing something, even just tapping me gently on the arm or kicking the wall, he was too wired still and needed to let go a bit more.
He is 3.2 now and I do still lie with him to get to sleep but it isn't a problem to me - it definitely makes a difference from being woken several times a night! I'm thinking that if I want to change it in the future I could swap with milk first, then stories, and me sitting next to the bed until he's asleep, then either shortening the time or moving further away.