I did a lot of looking around. Here's my findings..
the js/openfl-html5 target ultimately creates a canvas element for every flash.display.Sprite...I think. I couldn't find it in the code but if I run your openfl template app and click "Inspect Element" from Firefox I see that the .js creates a bunch of canvases. Which made me worried to be honest. Is this ideal? Wouldn't it be faster to have a single canvas and use something else to display the items in it? Is OpenFl html5 target really efficient? I sure hope it is....
Here's a test:
http://www.gamepl.org/demos/test1/Your template app is at the top, and behind it is the webGl canvas. Some things I noticed... Even if the canvas DOM for the webgl is at the bottom, and even if I increase it's z-index from Firefox to whatever, it's still displayed below the 2d stuff.. So I wonder if it's similar to the flash's stage & Stage3D case. Also, There's no transparency in that demo because openFl creates an extra canvas called RootNode by default somewhere, which has white background. With Inspect Element you can delete that node at runtime with firefox/chrome and then you get to see the webgl behind your template app (the RED color means it's WEBGL, because that's the background color of the webgl canvas).
Also, FlashDevelop insists on creating the default .html with background color==#FFFFFF for the body and the jeash div styles. I had to delete it that manually to get the transparency I wanted. If you happen to know anyway to avoid this, and the RootNode thing it'd be great. But I'll give it a looksie next.
Since I'm getting similar behavior with flash's problem (stage3D MUST be behind normal stages), I'll embrace it rather than fight it.
In away3d it wasn't really a problem. You'll almost never want 3d shown on top of 2d graphics. I want to use the flash-target for mobile AIR so renderToBitmap is not an option. It's better to render 2d stuff in Stage3d with a framework like starling, but I don't want to get carried away (also would need to find some webgl solution for 2d sprites as well). So......
For 2d, I'm sticking with OpenFl. Then for 3d, I'll set the limitation of having them below 2d stuff. Then I'll create the subsystem3d Entity class exactly like you said. The target specific concretes will then call up three.js and away3d, so the concretes Entities won't have a View or a Context either.
Then I'll use all your IoC goodness to create and manage the proxy entities inside my subsystem3d (their logic, behaviors and create them with a data driven approach). What do you think?