I don't know a single person who can code well who is looking for a job. We've had requisitions open for months and we pay well. I have a req...backed developer...write good Java, know some basic SQL, have written a REST service...what most backend programmers do. Pay range is 150-200. We can't fill it and we're a major name. The candidates we get, including H1Bs, can't do basic Java, SQL 101, or when we find someone we like, they go somewhere else...that's either a more prestigious name (usually Google) or closer to whatever suburb they live in.
I've tried many times to get my buddies to join. They ultimately pick someplace with a shorter commute or whatever quirky criteria they set (like industry, project size, company size, etc)
I think you've just demonstrated that the pay range is not enough. Try _starting_ at 300k and see what kind of applicants you get. Your 'major name' may also be hurting you. It may have a bad reputation (even if you don't realize it). You may also want to take a closer look at your hiring process. Are you guys big fans of coding puzzles that have no relevance to actual, day-to-day work?
Put yourself into the shoes of your applicants: I gotta leave my comfy home and suburb to go on a lousy commute to a shithole, crime-filled city to go to work for a company with a reputation for abusing its employees for the same pay I could get at any other less abusive company that is closer by. You really have to make it worth their while.
In my area, I am sure many are abusing H1Bs, but we're using them to fill positions we cannot fill at a premium price...and even that's tough.
You may feel it is a premium price, but it clearly isn't. Not for the kind of applicant you want. The top end of your salary range is below what I would even consider.
So yeah, as much as it "feels right" to imagine that good American engineers are getting edged out for cheaper H1Bs, it's just not the case in the major tech towns.
Actually, i think that's exactly what you just demonstrated. You're not wiling to pay for good American engineers. You're barely willing to pay for mediocre engineers from just about anywhere else. What you're willing to pay is just not worth it to them.