Im in a similar position to you and also have this problem. Although it's relatively annoying, I find that I have ended up learning and gaining a reasonable understanding of some things (theory of programming languages, parsing and haskell, etc) by stopping for a few months (university takes up a lot of time) and coming back to them. Although when I require some body of knowledge as a requirement to complete a task, I find it far easier to focus and learn a single thing without getting distracted.
So for me creating a distinction between what I need to know immediately in my daily life and what I'm learning for fun has been quite helpful in allowing me to focus.
I call this the pre-emptive lazily evaluated learning strategy :P