Even if Iran would charge $2 million per ship (like it has done) it would be manageable cost for for shipping companies and would generate same amount of income as Iran's domestic oil production.
When the US violates the law of the sea in the South America, why not. Everybody complains but understands.
Few things:
1) no one owns the strait, Iran has never owned it, its international waters.
2) Who says they keep it at $2 million? Due to the location they could say anything and people would pay it, that would have a massive impact in worlds economy. And any plans to bypass the strait would get heavy attention from Iran and their friends - because no one wants to lose their cash cow.
3) if Iran is allowed to do that, everyone starts to do that - you think oil is expansive now? Good luck when every country with similar bottlenecks nearby starts their tolls. Again, these are international waters.
As for the US breaking law of the sea in South America, I assume you mean blowing up boats? Has anyone proven that they have been civilians and that they have lied about the targets?