You're assuming that H1Bs are only awarded to highly skilled workers. Therefore, if they are being "underpaid" they could get other jobs that would pay them more.
However, this is not currently true. Currently the problem is that certain companies are exploiting the H1B program to get workers who are "high skilled" but only meeting the minimum requirements[1]. As a result, these "minimum requirement" H1B holders are not being "underpaid" they are appropriately paid for their skill level, while still:
1. Hindering higher skilled workers from attaining H1Bs.
2. Undercutting the current US workers salaries.
Meanwhile, giving H1Bs via auction(ideally, based on the employees yearly compensation), ensure that the US only takes the highest skilled workers[2]. Encouraging an import of the world's best. Larger salaries for H1B holders on average, therefore more taxes collected.
[1] Because the minimum requirements are actually quite vague and to anyone not in the tech field, its really hard to asses the technical abilities of a potential employee.
[2] Utilizing salary as a proxy for skill, based on capitalistic company's abilities to accurately compensate skill.
The best approach I've heard is the stack rank based on "minimum yearly income"[1], the top X number of potential employees are awarded H1Bs.
At the end of the year, the immigration office checks with the IRS. If the employee was fired/quit or was not paid more than the "minimum yearly income" the sponsoring company is forced to pay the difference in fines. i.e. At the end of the year, that H1B has to have cost the company at least the disclosed "minimum yearly income".
[1] "minimum yearly income" is some value less than: base salary + cash bonus + stock awards
Well the idea is that the auction "bid" isn't for a fee to the state, it's for the actual salary. Companies would then compete to pay their immigrant laborers more.