I may not understand what the OP wants, but see if this approach sounds reasonable:
Make your first selection / viewport. Hit select / "save selection" and, if you want, give it a name. Hit cntrl-D to remove that selection.
Repeat the previous line for each selection / viewport that you need.
If you look in the "channels" palette, you will see each of the selections that you have saved.
To use these selections, cntrl-click on one of them. This will make a selection. Copy that selection from the background layer to a new layer. Hit cntrl-D to remove that selection. Then do the same for each of the selections / viewports that you defined.
You will now have a document with a separate layer for each of your viewports. Each layer will have a transparent region (which you want to preserve).
Use any means you want to copy each of these layers to separate png files. For pre-CC users, "scripts / "export layers to files" would work. I presume that the new "generator" tool would also work, but I'm not a subscriber to the CC edition, so I can't check this.
I'm pretty sure that that the "export layers to files" script gives you the option to have it automatically trim away any transparent areas on a layer, but, if it doesn't, you can either write or find a little action to do this.
I think this gives the OP exactly what he wants, namely, it requires only one copy of the image, reusable, well-defined layer masks, pixel level accuracy in placement of the viewports when you modify the base layer, etc.
Thoughts?
Tom