Others have covered a lot, but I want to focus on this part:
I feel guilty for not having a hobby project, but everything I can think of doing has already been done. So I am kind of in two minds about this, start something that has already been done or leave it until I come up with something original?
It seems to me that this misses the point of a "hobby project." It's certainly true that many hobby projects are created for others, or at least with public consumption in mind -- these projects require a certain amount of consistent work over time, and can be daunting for that reason. After all, who wants to make yet another under-supported, low-quality something-or-other that ultimately gets abandoned after a couple of months?
But, there's no reason that your hobby project has to do anything useful for anyone at all. For instance, I recently started learning Haskell, purely because it's so drastically different from the imperative languages I'm used to, and it's really easy to get set up. I also just started learning the Redcode assembly-ish language, used in the programming game Core War, again out of curiosity.
This, in turn, has led me to look into creating a Notepad++ plugin to provide better syntax highlighting features for Redcode, which has led me to consider learning a bit of C++. Drawing on my comparative familiarity with .NET, I am now pondering getting myself set up with Visual C++.
And the thing is, none of this really "matters," at least not as a project. Hell, I'm not sure you could even call it a project per se, so much as a bunch of stuff I'm kind of messing with because it caught my attention. I mean, you'll need a little time and organization to make sure you actually get something out of it, but no one will care if I stop having time for Haskell once school starts.
And no one will care if it turns out that plugin development for Notepad++ is harder than I expected, and I give up -- indeed, I looked into Perl before I dove into Redcode, and I abandoned it pretty quickly because I had difficulty getting the environment set up properly. Did this show a lack of persistence? Yeah. But nobody cares, because it's my hobby, and that means I get to play with whatever I feel like.
So don't feel like you need to pick some hobby project that will teach you Marketable Skills -- that's just turning your free time into more unpaid work time. The skills come as a result of what you do, but they're not the reason. I understand declarative programming better now, and how assembly languages work, and how programs use DLLs. And I've learned a bunch of stuff about the Windows command prompt, and other things that you wouldn't have thought were connected to anything I've mentioned thus far.
The point being, find something completely new, and see if it's as interesting as it seems. If it is, great, and if it's not, move on. Have you ever had even the slightest curiosity about compilers or interpreters? Go take a look at LOLCODE. If it makes you as happy as it makes me, then it's time to start learning about compilers. And hey, maybe you should go back and think about syntax highlighting again. In fact, this will probably be the next project I start.
If that's not your thing, try something lower-level than you're used to. Or higher-level. It doesn't matter. The only thing that does matter is that when you look at it, you think "Fun!"