the response from cpanel:
The only domains that can be "modified" would be the primary domain name of the account itself. You could change *that* domain, but not any other subdomains/addon domains/parked domains on the account. Accordingly, a subdomain under that main domain would not be able to be changed.
If you hadn't already created these domains, you could create them as separate and unique cPanel accounts so that they each are a "primary domain". In such a situation you would be able to "swap" the domain names tied to them. But, from what I gather the domain/subdomain have already been setup and therefore that's not an option.
If you want to exchange/swap content between a subdomain and primary domain, you would need to follow the below steps. Please note that this will involve downtime for both sites (as long as it takes to manually swap their content).
 Temporarily move away the primary domain's content to a secondary location/directory. Essentially, you'd need to "clean out" the primary domain to make room for the subdomain's content to be moved there.
 Move the subdomain's content out of its own directory into the primary domain's web root. This would effectively make the subdomain's content now located at the primary domain
 Optionally, move the old primary domain content into the subdomain's web root to fully "exchange/swap" the contents of those two domains fully.
There is not an automated method to swap subdomains/main domains contents like this. It would require manual involvement as above. This is also considered web design/development and is thus not something that cPanel staff would do for you (I see you mentioned earlier about how much it would cost for us to do it for you). However, if you ran into any problems we would certainly be able to assist with those problems and get you on the right track.
One important note about moving content per the prior mentioned steps is that the absolute path of the files will change (you're moving content around on the server after all). This means any PHP/Perl scripts, if you have any, may break by moving them. This depends on whether or not they have their own configuration file that requires an absolute path to its location be entered. For those scripts, you'd have to manually update their configurations to reflect the new absolute path.