Third alternative: you use products that are decentralized, federated, distributed, etc, where the cost for each individual/organization is much smaller, and that can communicate together…
e.g. I run my own XMPP server, minimal costs for myself and can communicate with anyone else who has a federated XMPP server. Nobody is being exploited, people are free to pay or not for the service, etc, all depending on where they sign up/what they want to run/who they trust.