I would start with a little low-key modified "crying it out" at bedtime - he should be put in bed before he is completely asleep, that way he learns to relax and do the final bit of falling asleep on his own. At our house we do this, but just stay by the crib, and if our little guy starts crying in earnest (not just 'fussing'), he gets picked up and rocked a bit more - maybe 3 or 4 times for 2 minutes each time, with soft whispering about how sleepy he is. It's usually possible to get him to fall asleep within about 10 minutes.
Our l.o. is still waking up during the night, but now at his first wake up (usually around 2am), my husband again rocks him back to restfulness, and most nights he sleeps until about 5am, at which point I nurse him in our bed, and he stays with us. It's not perfect, but it is getting better, and he still gets lots of cuddle time in the early morning.
It will get better! Going to bed earlier may also be a good idea.