fv44, I'd tend to go with the 301 redirect as aakk9999 suggests. The canonical tag is implemented by the search engine, not by your server, so IMO there's more chance it might not work.
Variants of the "double indexing" problem you mention pop up frequently in discussions about cPanel, not always exactly as you describe. As I understand it, and I'd appreciate feedback, it's got to do with the way add-on domains or additional hostnames are set up using subfolders or subdomains of the folder for your main domain, and the multiple ways this content can be viewed. Some say that as long as you don't have a link pointing to the wrong version you're OK, but that's perhaps true of any canonicalization issue.
I'm not an Apache programmer... but, also, as I understand it, because of the way cPanel is programmed, doing a proper 301 redirect on Apache using mod_rewrite
can have its own set of complications.
Here are several threads on the topic I've had bookmarked which will point out some of the issues. You may need to discuss them further either here, or in our Apache Web Server forum [webmasterworld.com
From this first thread, I'll quote the initial part of the answer by jdMorgan, the original moderator of our Apache forum, and one of the deans of Apache programming... Multiple Redirects For Same Page Found pages that were being redirected 2 times May 2006 https://www.webmasterworld.com/forum92/6283.htm
The basic problem is that by using cpanel to 'write' the code, you cannot control the order in which the redirect directives are added, or what order they execute in.
If you use mod_rewrite for the per-page redirects in .htaccess, and place them above the domain redirect, then your problem will disappear. To emphasize: You must use mod_rewrite for all redirects; If you mix mod_alias and mod_rewrite directives, then --in a normal server configuration-- the mod_alias directives will all execute first. Because mod_rewrite is *required* if you want to do conditional rewrites/redirects, this establishes the need to use mod_rewrite for all redirects....
This thread suggests a range of different approaches, with various opinions about urgency, though none of the approaches except mod_rewrite, I think, that will fix a problem once an unwanted variant is linked to.... Add-on Domains - can also be accessed as subdomains May 31, 2011 https://www.webmasterworld.com/google/4319903.htm
And a more recent thread, which also includes a number of approaches... Add-on Domain Indexed As Subdomain of the Main Domain - How to fix it? May 2014 https://www.webmasterworld.com/google/4674394.htm
phranque mentions several times in the thread...
you always need a hostname canonicalization redirect.
I think there's no one answer about how long it would take the rel=canonical tag to work... depends on how often Google revisits your site, etc. If you use the rel-canonical, please let us know if it works.