I'm a tech lead at a startup and have worked at mid-size companies (I've avoided large corporations). Even if your problems are difficulty 10, you don't need a "rockstar" to solve them. My experience with typical rockstar developers has been similar to yours, they work poorly with others, communicate poorly, and often write inscrutable code. I firmly believe that nobody is invaluable. No company can afford to have a person that were they hit by a bus, or just left, the company would fail.
There are plenty of developers out there that wouldn't be considered "rockstars" in the stereotypical sense but when given a problem, I know they will produce good, well thought out, performant code within a short period of time. During development they will seek out criticism from their peers (and they see the rest of the team as their peers) and the final solution will be respected and understood by the team. I think of these people as seasoned engineers, not rockstars and certainly not developers. Engineers break down problems and build a solution before they ever write a line of code. I also believe you can become a seasoned engineer rapidly, possibly even straight out of college. It's about perspective, not necessarily experience.
One of the most important things in an engineering group, in my opinion, is the ability to walk into a room, argue out a solution, possibly admit you're wrong and somebody else's solution is better, but know when to fight your corner, then leave the room as friends and colleagues, ready to build the solution together. The ego rockstars carry makes that scenario impossible.
It depends on the industry, your skills, and why you left. Nobody is going to think badly of you if you leave to gain a post-graduate degree. In that situation the company may be very happy to hire you back, and keep you, as you have strengthened their talent pool.
These days, while a future employer may not check your references, it's not uncommon for them to at least call you previous employer and ask if you're "re-hirable". It's one of the few questions, other than simply confirming that you worked there and your position, that they can ask. Failing to give 2 weeks normally renders you not re-hirable by the company you ditched and raises serious questions for the company considering employing you.
Also worth considering, if you're leaving a job because there's a better offer or it's just the right time in your life to take a risk (I left my last job to join a 4 person startup), you may be back working with your previous employer in the future, At my last company, there was one guy who had left and returned 3 times.
You're basically calling streaming services a replacement for owning a digital copy, but they're not the same thing. As everything, distribution of content especially has move online, streaming services are replacing Blockbuster and other video rental services. For the amount of content you can consume they are considerably cheaper than buying the content.
There are plenty of services, iTunes and Amazon particularly, that sell you digital media and can't revoke your access one you've purchased it. You can download it and burn a physical copy. There are various ways of removing the DRM (ignoring the legalities of whatever country you happen to be in). Netflix hasn't killed iTunes and isn't likely to, neither has Spotify.
I pointed a friend at Design Patterns by the GoF a couple of months back and his response was "I hope computer science has moved on from that in the last 20 years." That's the wrong attitude. The fundamentals stay very much the same. MVC frameworks for example, may be the current hotness in web development, but the design pattern was documented many years ago.
I felt the same way about my CS degree for the first 3 years, I didn't feel it was relevant to real world software development. Then I had to do a 6 month placement as a required part of my course. I worked as a web developer at a large media and marketing company. What I had learned in the previous 3 years set me up to quickly understand and get up to speed with the code I had to work on and my placement was such a success, something I attribute to the education I received, the company hired me after I graduated.
CS is a complicated area with a lot of fundamentals to cover. It is a career where art meets disciplined engineering. College should teach you the fundamentals and how to write functional, good code. It's the boring bit. Over time you'll learn from your own mistakes (and you will make mistakes) and write better, more beautiful code. Don't discount the fundamentals because they are a little boring.