IMHO, you have not "identified your bottleneck". You have found out that the field of CS is a very broad one, and that there are quite some sub-fields you haven't mastered (yet).
Let me tell you that you're not alone, that probably nobody in the CS field covers all the subjects you mentioned, and that's perfectly okay.
It is good to have a rough understanding of most of these fields, but you need to concentrate on just one subject and become fluent there, be it Operating Systems, Compilerts, Databases, IT Security, Artificial Intelligence, Embedded Control Systems or whatever. You should base that decision on your preferences, capabilities and of course the job market.
If you feel attracted to Electronics, then embedded control systems might be a way to go. There aren't too many developers out there capable of understanding both worlds, the electronics hardware and software development, so it might be an interesting niche.
What are your plans for the future?
- If you want to add some more steps of formal education, look for an institution offering appropriate courses or programs, covering the specializations that are of interest to you. But you already have a degree, so do you think the new one will significantly improve your chances of getting a job, and not be a waste of time?
- If you want to get employed as a software developer, start applying for jobs now, and in parallel, start some project of your own (or contribute in an open source one), so you get experience in bigger projects instead of small exercises, something that can be a door opener ("I'm one of the main contributors to ").
- If you want to start a freelancer career, find some unique selling point, some specific experience, something that distinguishes you from the millions of other developers. And again, experience in handling bigger projects will be important.