Firstly, he is exhibiting perfectly normal baby behaviours. You have not done anything wrong - he's just one of those babies who is a late developer when it comes to independent sleeping. Do not blame yourself for anything.
Secondly, and hoping I'm saying this in advance of anyone else, a two-hourly waking baby is categorically NOT waking because he is 'hungry' so extra feeding, porridge before bed etc is almost certainly not going to work. It is a massive misconception about breastfeeding that night waking is a response to hunger. He's doing one sleep cycle, needing the best reassurance there is in the world that he's safe to continue sleeping it, finding it in the breast, with the added benefit of the sleep-inducing tryptophans found in milk, then knocking off again.
Thirdly, there is no quick and easy way of changing the way he sleeps and there is certainly no cry-free way of doing it. Essentially, by letting him fall asleep on you, then putting him in his cot, it's basically like you falling asleep in your bed, then waking up in the bathtub. It's not where he fell asleep, nor is it where he wants to be asleep as you're not there. Going straight from the way you're doing it now to controlled crying is pretty harsh and I would suggest that it may not work as he is clearly not a natural independent sleeper, and will not take kindly or easily to 'you'-substitutes like a comfort toy or dummy. CC just thrust my DS1 into total cot-aversion and made him even more reliant on co-sleeping.
The best thing I can suggest is, if you have room, get rid of the cot, and put the mattress on the floor of his room, and get yourself an air mattress to sleep on the floor next to him. This will get him used, with you there, to the idea that his room is safe to sleep in. You can shift over, feed back to sleep as needed, and you both essentially have separate sleeping spaces, which may help you both. Do this for two or three weeks. As/when you have the energy to try and cut night feeds, do so. This will not happen without a shit-ton of screaming, so be prepared, and maybe swap with your DH for part of the night. E.g. Do bedtime routine without feeding to sleep, then leave DH with him, perhaps even holding him on his cot mattress initially when going to sleep. Leave DH with him until midnight, swap, then do usual feeding back to sleep from then. Gradually extend the time you swap. Eventually move into more traditional gradual withdrawal. Yes, it will most likely take weeks/months, but is far more likely to have lasting results, rather than CC or CIO which, if they work at all which I think is unlikely, would probably only work temporarily until the next developmental leap or tooth.
Speaking of which, 9-12 months is a roller-coaster developmentally and health-wise in terms of colds and teething, though, so none of the above worked with either of mine until they were close to 18mo. They both sleep brilliantly now though, DS2 even better than DS1, I think because he was supported to sleep in his own time, rather than having it forced upon him before he was developmentally ready.