There is a false dichotomy between balancing for cheap labor and demoralizing the Average American Joe. First, I don't want to hire cheap labor. My first boss did just that (especially with the foreign kind) and his company is now under water. Cheap labor doesn't work for programming.
My last job, the company's still doing quite well, beat Q1 expectations by 50%, and we did something like fifty to a hundred phone screens a month for an average of 1 hire a quarter. That's up to three hundred phone calls for ONE goddamn programmer. Do you know how frustrating that is?
What I don't buy about the argument of the Average Joe becoming cynical is that I just don't see a lot of hard work. Binary search is something that you should have learned in freshman year of college, and yet it's still a staple of programming interviews because people regularly fail it.
There are bad apples all around and the situation remains the same with foreign programmers. There are actually very few good foreign-born programmers, just as there are very few good American-born programmers. The catch is that they've all been spoon-fed all the algorithms knowledge so you have to pose your questions in other ways, see if they can creatively apply their knowledge to real world tasks like flipping through a phone book, etc.
In all, I think the problem is more one of PR. We need to get the word out that if you are good, there Will Indeed be a job for you out there. If you love doing it, then stop being so scared of the hordes from India.