at most times i'm in the middle of 4-5 books minimum
There's your problem. Start reading just one, commit to finishing it. If it doesn't keep your interest, then commit to closing it for good and start reading something else.About working on hard problems - personally I'm at my best when my mind is relaxed and entertained. I have a hobby (photography) and I also like spending time with my 11-months old baby boy.
If you can't find the time to read a book or do something you like other than programming, your mind doesn't stay still, even when programming, no matter how much you like it. You'll always be thinking about your next next project, or about that new and shiny tool you are dying to try out but don't have the time, or about how you're going to save the world someday with your awesome software. Your mind and body crave for other activities other than programming, even if you don't realize it.
Also, TRY DOING NOTHING every once in a while. It's a lot harder than it sounds, but does wonders for your attention deficit.