There is no silver bullet (I think) but a lot of good techniques to work better.
- "mood" and "postponing" bullets
I have successfully adopted Pomodoro Technique, this is a good time & task management technique. You can find other techniques as GTD which I haven't personally tried.
- Sleeping problem
The best suggestion I could give you is: do physical exercise! Schedule a run or go cycling with your friends, go swimming, get out of your house. If you have some company to exercise you have a lot more motivation! A technique to sleep that much without feeling tired is polyphasic sleep, particularly the technique called "siesta": 6 hours of sleep at night and a quick nap in the afternoon, always at the same time. This forces you to go to sleep and wake at precise times in a way that feels more natural.
- "addiction" and "distraction" problems
I think you could get a big help by managing your problem with procrastination. As I said at the beginning writing the question is a good start. Writing is a good way of understanding what you really want.
- Write a plan
This should be the first step, this will make following the plan a lot easier (writing a plan will cost you just one or two pomodoros :) )