While you are right about some aspects, you are dead wrong about others.
First, if I have a req for an engineer with a range of $160K-$190K, if you are making $220K I know it's unlikely that you will accept this job. If I'm really excited by you in an initial interview, I might find another position and talk with you about considering that one instead.
It is true that the person is unlikely to accept the job. But the rest of your reasoning is unsound.
If you are so eager to hire within that price range, YOU should be making the price range public.
But you don't do that, because you know deep down that your job as a hiring manager is to negotiate the lowest wage you can. You can possibly offer a different job instead, but you didn't publish those wage ranges either, for exactly the same reason. If you mention the number first, you will lose your bidding war. People will just pick your highest number as the lowest you're willing to go.
If' I'm not really excited by you, I'll not pursue it as there's no reason to waste the team's time interviewing someone who is unlikely to take the position and/or will start out with low morale and will likely leave before your on-boarding costs have even been recovered.
That is exactly the reason YOU should reveal your salary range to the potential hire, not the other way around. No point applying to the job if you aren't going to pay well.
Personally I will usually get several job offers before accepting one. I have absolutely no problem telling the people they need to wait a few weeks for all the offers, and I'll negotiate while I wait. If I as an applicant am not really excited by you or your offer, I will have no problem wasting YOUR time. I will find various ways to explain why it is too early to state a wage.
One reason I give most often is "It depends on the entire package. A good benefits package can offset a lower wage, other times if there are risks or travel time that we discuss during the interview I will need a higher wage. It is too soon to discuss the details, and we must discuss the entire package and not just one number."
Second, the person who knows you best as an employee is likely your last employer. If they were paying you an unusually low (or high salary) taking into account the company as some are known to pay high while others pay high, they likely don't think you are very valuable (or think you are very valuable). This is an interesting hint to me.
Translation: If your last company was able to screw you over, you should let me know in advance so I can screw you over, too.
In all cases, if there's a reason that the applicant knows their last salary (and perhaps salary history) is problematic, they are free to explain early on (as in, "You may notice that my salary was very low at my last position. This is because I was working for my brother-in-law and trying to help keep his business afloat as a family favor.").
Not in all cases, no. Many people don't know what the best wages are because they are kept as secret as possible. The person may be completely ignorant that they were the lowest paid worker in their group.
As a hiring manager, I try to bring people in as high as I can without creating disparities among the group between engineers of similar skill and productivity. This is simply logical -- when raise time comes around, I get x% to spread around and I don't want to consume it bringing people "up to grade", I'd rather spend it rewarding people. It's usually much easier to get another $15K for a new hire (esp. when the position has been open for a while and the boss really wants it filled) than it is to get another $15K a year later to give the new hire a "grade adjustment" raise.
Then you work for a company that doesn't really value its workers.
What do you tell them? "I'm sorry Joe, you did an amazing job this year and brought this company $5M in revenue, but I'm only allowed to give you a 2.4% raise. That's a $5000 raise so I'll suggest maybe you could use it for a vacation or something, although in reality it is less than COLA so it means you'll have to cut back on groceries and other expenses." Too many managers forget that even a full COLA raise is actually a slight pay cut year over year. If you really want to give workers a raise, first give them COLA and then give another several percent over the top.
For my location, regional COLA was about 4% last year, and about 5% this year when housing costs jumped nearly 10% year over year. That means anything under a 5% raise is a pay cut. A 6% raise is really a 1% raise, meaning anything under 8% is something to fight back against. For my company the rumors are already starting that the company is talking about a 4% increase nationally, and about 1/4 of the department is quietly asking for references and resume reviews because of it. When you start talking about being given x% from corporate that you need to shift between the workers, you need to consider if you are the person unwittingly hired to do the immoral dirty work yet having it framed in positive terms.
I can see in your post you are trying to do what is right, and that's good. But please realize there is so much more out there you could be doing but are not. You try not to create disparities yet also try to hire low, and don't like hiring people over the rate you have already established. You are also stuck in a company that follows the owner-friendly practice of limiting the money to reward people. The rewards are not based on the actual benefits to the company, but instead based on how much money the company deigns to give the workers. The flaw is not yours as a manager, but theirs as a corporate policy.