I think you made a fair assessment from my experience. One addition/correction I would add - and it's a big one.
Finding *qualified* candidates is the key phrase. We get lots of interviews from recent graduates, but many of us lament at how bad a great number of them are. The ones that went to U of Pheonix or other trade schools are just not suitable as systems coders (jobs we pay very well for). I don't know if it's universities failing to educate, or standards going up. I would guess a little of both. We need device driver writers, multithreaded system programers, graphics, etc, and it's very hard to find event experienced coders that are good at that. Most fail our screenings. It's not good enough anymore just to show up with a sheepskin in CS. You need to demonstrate you can actually build and debug something. For candidates that show initiative with personal projects and can demonstrate solid coding/debugging and can talk intelligently about architecture - we'll hire you in a MINUTE with some of the highest salaries in the industry. If you can't, then you're one of the 10,000 other global coders anyone can get. We do hiring lots of promising newbies all the time - but they have to show that initial spark and understanding at least. You can't just show up and be gimme a job cause I got a diploma.
I think this brings us to a great career point. You don't want to be floating in the middle as one of the masses in engineering - following just the trend lines. Sure, you need relevant skills so don't run out and become the ADA expert; but perhaps an example. If you were a Java/web coder in the very early 2000's when the bubble popped - a great number of those people never found work again and left the field. I felt bad for all the CS grads from my school that had just taught them Java (they don't know, they primarily teach C/C++ again and now we hire them). Unfortunately, when you're part of the big crowd, you're career and pay is driven much by the crowd and you must be really, really exceptional to stand out.
What will make you OODLES of money in engineering is being a master of certain much needed, but not well peopled, technique. I knew several guys that were above average coders but commanded insane amounts of money to come in and deliver a certain kind of feature. They went the contracting themselves out route and simply re-regurgitated the 1 of the 5 or so techniques they had implemented for this task really well, picked up a fat check, wash, rinse and repeat. I know personally of at least 2 different sets of people doing this with 2 completely different technologies. Sure, every year or two needed to spend some time updating and revamping the codebase, but they worked about 2-3 jobs a year and then took 3-6 mo off - and made large 6-figure salaries. Those are the people that get rich in engineering. You simply won't get rich working for a company unless you've got some kind of share of the sales.
So it is possible to get a job even as a new grad, but you need to stand out more now than before.