...Is just not there.
The fact is that a lot more businesses need the services of someone who understands "how to program" - but for extremely pedestrian purposes, such as fiddling a web page, or piping data from one application to another - and this is at the very upper end of the skill range.
An "experienced programmer" who gets, understands or can use: version control, common in-memory data structures, storage in general (b-trees, single and doubly linked lists, arrays, hash tables, graphs) and what is a good scheme for specific classes of problems; who can write and organize a fairly large (5000 line+) application from scratch - a person with that profile is just not necessary, even at a lot of tech companies.
Pay ranges and demand patterns, I think, reflect this reality which has emerged. This is truly the end game of object oriented programming and object based and message based architectures being pervasive at all levels of IT, from single user desktop PCs to enterprise based systems for businesses.
I used to believe that integration of heterogeneous systems was the next area of golden opportunity in IT. Was I ever wrong! The fact is that programming interfaces have become so simple that the effort to integrate multi-vendor, multi-platform applications is lower than it has probably ever been in the history of IT. (I mean the widespread prevalence of things like XML and other open web and data communication standards.)
I also think this model explains why job hunts for experienced people in this industry have become so hard, so protracted, and so frustrating. Every job opening that could have a simple chance of utilizing someone with an experience level as found on this board is a traffic jam - because that upper end demand pattern has collapsed.
The employers then interpret this message as "talent is cheap", start snickering at people that are 10x the men and women that their own people will ever be, and everything you know and can do has already been devalued by the employer before you even get there.
The end game of all of that groundwork, which fueled the prosperity of many of us in the 90s and early 2000s, is today's state of affairs: it's a tech workplace, but 98%+ what is considered tech can really be done by a smart teenager. No college degree or experience required.
I think it's this phenomenon and not even so much H1Bs nor simple agism as explanations of the weakness in hiring "truly experienced" programmers. There may be very few of us greybeards, statistically speaking, but the number of really high end jobs that could use us is truly microscopic.
To work on really hard programming problems today, you must go and find them yourself.