I think I can chime in with an advice or two. When I growing up, I had chronic insomnia, from as early as I remember until age 14. I think my perception of bed time had a lot to do with it. It meant only one thing: lying in bed bored out of my mind, with nothing to do but stare at the ceiling, while hearing my parents and older sister laughing and having fun (the walls were paper-thin). In a nutshell, it was utter boredom. I begged my parents to give me pills, but to no avail. They said it wasn't a natural way to fall asleep, so the answer was no.
A funny story to back up my reasoning. I kept begging my parents to let me stay up as late as I want. One day, they gave in, and agreed to test me. There was only one rule: nothing loud enough to be heard in the next room, and no food or drinks after 10:30pm (water was OK). I ended up staying wide awake until 1:00am. My parents were so shocked that they came up with a compromise: I'd go to bed at that time, but I could have anything I wanted for breakfast next morning (even candy bars). That night, I fell asleep in less than an hour, with a smile on my face.
Now enough about me, let's talk about your son. Maybe he's like I was: he associates bedtime with boredom. If you want him to go to bed willingly, you need to break that association. In other words, melatonin may be just thing. After all, if you son only "has to" lie awake for 20 minutes before falling asleep, he'd be much more willing to go to bed than if he "had to" lie awake for an hour or more. For added benefit, maybe you could set the bedtime an hour later. Extra tiredness, combined with melatonin will allow him to enjoy bedtime, or at least tolerate it.