In summary, it's about weighing your requirements, budget, and preferences. Each provider has its strengths, so do some research and choose the one that aligns best with your goals. The alternatives you're considering are all solid, especially if you have someone to set them up properly. Note: I personally do not think Cloudflare needs to be decommissioned if you are already using it, it's a great product and probably the most bang for your buck.
For distributed hosting with servers in different countries but maintaining one website and database, using a major cloud provider like AWS, Azure, or GCP is probably the most straightforward approach. You can enable geo-redundancy with a couple clicks and put your servers behind their load balancing services, it would not really make sense to also keep a live copy of this redundant infrastructure elsewhere. Keep in mind that these providers can be pricey, especially if you're spreading across multiple vendors. Also factor in managed DDoS protection, which will run you a minimum of $3,000 per month per cloud vendor. You basically pay to not get charged for being under attack.
If bandwidth pricing isn't an issue, I'd recommend using AWS with Cloudflare. You could also set up Lambdas to periodically export your database/server off-site. This proactive approach ensures data redundancy and facilitates seamless migration if you ever need to switch providers. Consider your Recovery Point Objective (RPO) and Recovery Time Objective (RTO) to determine acceptable data loss and downtime during potential migration. You would then, in theory, only need to adjust the Cloudflare configurations accordingly.
However, if bandwidth costs are a concern, consider opting for a dedicated hosting provider like Hetzner, OVH, Scaleway, or Leaseweb behind Cloudflare. Ensure geo-redundant availability for your files and database by replicating data among providers or datacenters of a single provider. While this approach is cost-effective, real-time replication may be hindered by connection speed between providers. Despite potential complexities in managing dependencies and connections, this strategy offers a viable solution for maintaining availability.