The workaround is that each change is a new contract. If you don’t accept the changes the existing contract ends and that’s it. But the power is mostly with the provider, you need it more than it needs you, so you will want the new contract. You can also ask and negotiate terms and the provider has the same choice. If there’s healthy competition you have some power, otherwise you are out of luck.

But that would supposed need to have some explicit text stating the expiration of that contract. An existing contract can't just end when provider feels like it, I suppose?

I would guess it can end the moment either party wants, unless a length was established. At the end of the month or year you’ve paid for, perhaps with a minimum notice, would make sense. Otherwise the provider can refuse to let you stop paying, citing the contract.

Yes, you have to enter into a new contract with the person you want a new contract with and he has to actually agree, as in any contract negotiation.

Which is still loads preferable to what's happening in TFA.