It's funny because I did exactly that (sticking to one project instead of jumping from idea to idea) because I had the same problem as the OP, but these days I'm getting the feeling this is also counterproductive. I spent a lot of time on a single project, learned a lot of things along the way, but progress was very very slow mainly because it started to feel like 'work'.
For me, these kinds of side-projects are all about learning new stuff, and sometimes to scratch some really small personal itch. So what I try to do now is to find projects that can be used a platform for trying out new stuff. For example, I've been working on an iOS game since 2014, but by now actually finishing it so people can play it is completely secondary to the personal satisfaction of incrementally refactoring and repurposing parts of the engine, using techniques and technologies that interest me right now. Becase even that started to feel like work at some point, I decided to also start some other side-projects that go in completely different directions, so I can switch depending on my mood and make slow but steady progress in each of them. I try to also incorporate some technology/techniques that pop up around my daytime job but which I never have time to explore at the office, some of that stuff is super interesting but I cannot justify spending company time on it.
I think the main advice I have for the OP is to find one or two interesting projects that are diverse enough to be a platform for experimentation, instead of some very narrowly focussed problem that will inevitably start to become boring sooner or later. Unless you really want to create a product or something to show off with, the main purpose should be personal development/intellectual satisfaction, not reaching some predetermined goal.