I would suggest to you to think your premises carefully before coming to such conclusions. When in an unfair situation, it is easy to be angry at a group that you consider as 'outsiders'. However, even with outsourcing, there are thousands of open positions for software developers/architects that are just not getting filled.
The only real solution to this problem that I can see is for each of us to be so super smart and accomplished that we have the capacity to make a significant contribution that not many others can. And then develop the social skills to demand the kind of money that we (fairly) think we deserve.
Outsourcing has ensured a downward pressure on salaries. Can an employee that is not allowed to leave his employer really ever going to be earning true market rate on salary? That's the case for HS1B in the US. There is plenty of evidence that salaries are manipulated down.
Now, regarding your proposed solution of becoming a master of rare and difficult skills. That's what I strive for, but that can be a challenge in an industry where technologies are replaced every 5 years or so. In reality it becomes that much harder because unlike other professions the mindset of employers does not respect the concept of 'superstars'. Ie. I can't really name a developer that has the ability to command a 50% premium over his peers. However, I can name several companies that can demand a price premium for their consulting services. So, how do we as a field make the shift from companies achieving a price premium to individuals achieving a salary premium?
The only real solution to this problem that I can see is for each of us to be so super smart and accomplished that we have the capacity to make a significant contribution that not many others can. And then develop the social skills to demand the kind of money that we (fairly) think we deserve.