While I don't doubt there's a lot of people that are on the low end of the curve, I think part of the problem is are these:
(a) interviews. I know I have bombed interviews where they ask about some problem or data structure that you haven't touched in years. I could tell you the theory behind recursion, and figure out an inelegant brute force solution on the spot - if I had access to an editor/compiler/debugger I could eventually figure out the more elegant solution.
(b) I think people become API monkeys because in many cases, why invent the wheel. Unless you're building a Kernel or some other special case application from the ground up, you're going to want to use what is most efficient, most readable, least chance of bugs, etc.
(c) I think people recruit the wrong way. They usually throw up a job ad somewhere and let everything roll in. Many people who you want to hire aren't necessarily on those sites. Or you get some clueless 3rd party recruiter. Many times the people you want are members of user groups or other prof. organizations. The people there are generally higher quality, more willing to learn, etc. And you can get to know them in a lower pressure environment.