My problem with employers isn't that they want to hire an unusually skilled person at what they've decided is "market rate", with no relocation. Or that they want to subject candidates to interviews amounting to intense all day (at times, multi-day) oral exam on undergraduate CS coursework, or that they don't want to hire anyone over 35.
What gets me peeved is when, after doing all this and discovering that they can't hire, they go to congress with claims of a "shortage", and congress actually believes it. This "shortage" is absolutely a self-inflicted wound, an outcome of all those things I described above. Software employers are not offering jobs that are competitive with what other industries are offering talented people. If that changes, you'll get your candidates. If not? Why on earth should the gov't create special programs to allow tech companies to bestow residency on workers (under conditions that limit the worker's personal freedom)? They can hire any of the 1.2 million immigrants who come to the US as free citizens able to choose their own path in life, just like in any other segment of the economy.
If an employer accepts this, then I have absolutely no problem with whatever salary they want to offer. If they can hire, hey, well done. If they can't, well, talented people are in demand, in software and elsewhere, that's how it goes.
If that was the case, why would you extend a job offer with a bad relocation deal rather than not offering the job at all? Are you hoping the applicant sees how bad your deal is and turns you down? Why wouldn't you just not make the offer?
Also, an employee with a stable work history isn't likely to leave quickly after finding a new job unless (1) there's something terribly wrong with the company's culture or work environment, or (2) they've been lied to (e.g., told in their offer letter that they'd get fully-paid health insurance and four weeks of vacation, only to have them taken away a few months later by a "policy change").