Unfortunately there are no easy or perfect answers with a truly shit sleeper, I have 2.
I'll tell you what we do, it's not ideal and feel free to disregard it if you don't think it will help you but it means I get enough sleep and that was pretty much my only aim to be honest.
I have a super king size bed, I do bedtime in my bed, stories etc. we have a bed guard on both sides of the bed. Once DS is asleep I go down for dinner/tv/an hour or two with DH. I leave DS in my bed, I don't bother transferring him as he'll only end up back there anyway and if he wakes up in his cot he gets distressed and then is difficult to resettle.
We have a double bed in the spare room, DH sleeps there so he gets a full, decent night's sleep.
I go up about 10.30 before DS wakes, we co-sleep. You might find an adult sleeping bag with legs helps and provides a buffer, DS can wear the same (with socks to reduce the scratching).
If DS wakes fully he gets upset then is harder to resettle, if he stirs and I'm there he will go back to sleep. When he stirs I move to his side and cuddle and reassure him till he calms then I roll back to my side. That's now pretty instinctive and I don't really think about it.
If teething I do nurofen in the bath before bed. I listen to podcasts in the night if I'm awake for any length of time as it distracts me and means I don't focus so much on the fact that I'm awake.
As DH gets an undisturbed night he does all the early mornings, I catch up once DS is up and have reasonably long lie ins at the weekend. If one of us is struggling the other takes the kids out for an afternoon to give the other a nap/downtime.
It's not perfect, but he's my second rubbish sleeper and I gave up fighting it a long time ago, I just found the constantly trying to find a "solution" and failing made me feel shit, the process of trying was more exhausting and as none of it made a blind bit of difference anyway it was ultimately pointless (for us anyway).
Good luck OP, I hope you find a way forward that works for you.