For the apps, couldn't you create a new account (sure you'd have to buy the apps again) and be back up and running?
Personally, I'm using nodejs-notify[1] to watch all mailboxes of all accounts via IMAP IDLE, and have it execute mbsync[2] when it receives an event to sync the account with a local Maildir. I got my MUA (mu4e[3]) configured to use those Maildirs without doing any IMAP itself.
[1] https://aur.archlinux.org/packages/nodejs-imapnotify/
[2] https://www.archlinux.org/packages/community/x86_64/isync/
I have all my photos on iCloud. But they are also in the Photos library with full resolution on my computer. If apples locks my account, I don’t lose my photos.
Same thing with Dropbox. Synced but still available on my computer.
Same with Gmail. Synced with Mail on Mac. Downloaded regularly.
I simply try to make sure my data is always on my computer and migratable. Not the application itself.
a) buying my own domain
b) ensuring that the authoritative ns1/ns2/ns3 records for that domain are hosted at a diverse set of geographically diverse nameservers, for example an ns1 that you run and then using route53 and another non-route53-service for authoritative slaves.
c) setting the MX records for it to either a mail server that you run, or a third party mail server. This is sort of a compromise approach. You can use office365 or google if you don't want to fully host your own mail. You say you don't want to deal with the hassle of mail deliverability, so use either of those and let them handle the spam filtering, SPF and DKIM. Mail that's hosted by office365 is trusted by just about everything out there, in terms of not having other peoples' SMTP daemons reject or blackhole your mail. If either of those cuts you off for some arbitrary reason in the future, you at least have the ability to change the MX records to another service as you see fit.
Edit: A Plex server is a really easy way to back up photos from multiple devices as it syncs and you can control that entirely in house.