Many of the companies I have talked to have fairly large lists of requirements for positions and are serious about requiring them. They get really picky about specific languages, frameworks, and experiences. As I mentioned in another discussion here recently, there are tens of thousands of programming jobs controlled by companies who do not see a programmer shortage from their perspective.
When discussions on hiring methods come up, multiple people inevitably chime in that the companies in question are dealing with situations where they have more qualified applicants than slots. That is in direct conflict with what you said above.
I would love to be able to jump jobs for 30% pay raises. I can't. I started my career at $55,770. I'm up to $92,500 14 years later, which is only a 66% bump for my entire career. Even if we consider me underpaid for my area (Hi! I'm looking in Dallas!) I would likely only be looking at a 100% total career bump if I got that situation addressed. There are companies out there who refuse to give you more than X% above your current salary, regardless of how underpaid you are.
It's funny that you should mention AT&T, what with them being headquartered here and all. I see them as one of the companies I was referring to in my second paragraph. I have personally applied to them for multiple positions and heard bupkis.
It may well be that certain sectors in certain markets have these issues. I do not see it as widespread. What I do see as widespread are broken recruiting and sourcing practices, HR departments that work at cross purposes to the other departments they support, and a general desire to hit all the points on a wish list, no matter how long it takes.