(d) in particular is worth stressing. There is no difficulty in attracting and retaining talent. There is simply an unwillingness to pay them what they're worth and give them an environment in which they'd want to work.
Supply and demand. It's pretty simple.
Yet so many (typically business types) want to treat engineers as an interchangeable cost center. "5 years ago an engineer cost $100k so I refuse to pay more than $100k now to keep my costs in check".
The fact that it's taken this long for engineers to be recognized (financially) for the huge impact we have and the vast differences that can exist between individual engineers speaks volumes about us. As a whole, we're just not as good as the business guys at this compensation game and, a lot of the time, it's not our primary motivation. Give us something interesting to do and stay out of our way and we're happy.