I'm like you, OP. But I've fixed it, to a large degree. It'll never be perfect, and I'll never fall asleep before midnight, but I'm much better at getting a good night's sleep, almost every night.
One of the keys is not only to do the right things once you get in bed, but to do the right things beforehand. These nightly routines have changed everything for me, and did so pretty quickly...
Shut off your TV, computer, or mobile device about an hour before sleeping. That extra stimuli can get your brain ratcheted up. If I'm playing a tense videogame, I stop it a couple hours before bed, otherwise I'll be reliving the game as I try to fall asleep.
Do some simple stretching for about 10-20 minutes at some point in that hour before going to bed. Not only will the stretching help you sleep, but this gives your mind some time to go over all the things that would otherwise keep you awake in bed.
When stretching, I sort through all the things from the current day and the next day to come. I don't do anything else. No talking, no checking email/Facebook/Twitter, nothing. Just stretch and think -- or don't think. By the time I'm done, I won't be worried about what happened or what's to come.
It's not for everyone, but I often have a tiny snack (e.g., half a mini-bagel with some peanut butter) in the hour before bed. If I'm hungry, I can't sleep. And I have pretty light dinners, so I would be hungry without a snack.
And, if nothing else helps, you can always take some advice from Ernest Borgnine:
https://www.youtube.com/watch?v=3I_PeLNzxNQ
Good luck!