I will have a closer look at this later! Definitely cool that you have come up with something usable in such a short time!!
The second canvas is really not ideal, as you can tell, but makes it much easier to get working! The next steps will be reducing the area for the original viewport to cover only half of the canvas. And then placing the second viewport in the unused area of the canvas. :)
Also a nice optimization, if you haven't already thought of it is performing the update loop and draw loop on both viewports simultaneously. I mean, you DO NOT want to update an object more than once per loop; you just want to know whether it is visible in one (or both) viewport. I would actually set a private variable on every object with a link the the viewports they appear in. That will make drawing to the proper viewport effortless. :D
Sounds like great progress so far! This is a feature we should consider integrating, for sure!