I use https://krystal.co.uk at the moment not had an issue with them been really good and reliable. My hosting was with another company who were a local Glasgow hosting provider but since been bought/merged with Krystal.
I use Freeola. They are very cheap, although their webmail is a bit rubbish, but good enough. You can use them through any client if you prefer. It’s the same company as Special Reserve, if you remember buying games from there mail order as a kid
I use them as a reseller, they are good but they don’t use O365 so I have a reseller account with Microsoft that allows me to sell Office 365 to my clients, and of course provide them with support.
Gandi.net is a great product,. They’ve kind of ruined their reseller hosting product recently but individual/corporate packages they are one of the best in my opinion.
For email you should seriously consider Office365. You can choose where to host the email and they do have a UK data centre option now.
Just in response to some of your points though: 2 factor authentication (for each email account and for the hosting account) Microsoft Offer this as do Gandi. Gandi don’t offer it on their individual email accounts (yet… though I hear Yubikey is on it’s way)
Preferably a (monthly/yearly) charge per domain, not per email account. The cost of the likes of Google add up quickly… I think (and it’s just my professional opinion not a slight on your request) you’ll struggle to find this. Gandi for example do offer some free mailboxes with their basic domain package but once you need more almost every provider I know of will charge per mailbox.
This is very true, with Microsoft you can buy the licenses you need from 1 upwards, so although it is per mailbox, if you know how many you need and factor that in you will know your monthly cost. However, little trick here. If you buy a license for 1 mailbox (package), you can then have a number of shared mailboxes on the same domain (free). These are on Business Packages.
I have my own domain but I have that registered with TSO which I never move to a new host. As I can change the name servers etc with them if I change web hosts etc.