I hope I don’t get in trouble for this, but depending on what you need I recommend hosting your email domain(s) and website domain(s) on separate servers. I like Virtualmin for website hosting and have never used it for email purposes, but I have been using iRedMail (with iRedAdmin-Pro) for several years, and highly recommend it. Their documentation includes migration instructions, but I’m not sure about docs for migrating from different systems.
That said, while I think your general idea is sound, the details and which MTAs you’re using and what storage schemes they use are very important to know in advance if you’re going to do straight file-system transfers. A better approach, in my opinion, for disparate systems (e.g., cPanel to Virtualmin) is to use iampsync. It’s been around for years and the author sells it (for a hell of a deal, considering how much work it will save you), but it’s included in some distros’ repos.