Companies that complain about not being able to afford decent developers are just saying they don't have a strong enough company to cover the costs of the inputs to their business. It doesn't matter if the input is oil, steel, baking powder, or software developers.
Companies that can afford high developer salaries when there is a shortage are the ones that get a high enough ROI on a developer's time that they can actually buy more of that time at the current market rates, and still have enough left over to pay the executives.
It's not about being cheap vs. generous.
You can decide that you can't afford actual competitive salaries, but calling your salary offers competitive when they are not will not help you in any way.
Someone else should immediately retort with "At what price?"
>It's a bit silly to say "there are no shortages! Only cheap consumers!"
It's only silly insofar as shortages result despite the existence of consumers willing to pay market rates; these generally involve state-imposed price ceilings. What is silly is conflating "shortage" with "someone somewhere wants something but isn't willing to pay the market rate".