Using a page template would require you to use all the same functions. The difference is we’d be able to use is_page_template()
in the code I mentioned above to target the page and remove the canonical URL.
As for pagination, I’m afraid I’m not sure how that would be handled in this scenario, unfortunately. Is it working with your current setup?