Your question is the first step to get rid of your problem. However you need motivation (that maybe needs to be built up) and a good technique to
There is no silver bullet (I think) but a lot of good techniques to work better.
"mood" and "posponing" 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 (points 1 and 2)
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 of the answer 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 :) )