I also explored the use of a 2D engine but in the end just used Three.js. If you setup your camera to never move in the Z direction, and place all visual elements on the same z = constant plane then it is a 2D engine.
The only thing you would have to address is the z-order of elements on the plane. One way do this is assign each element a slightly different Z value:
For example if you’re drawing on the Z = 0 plane then you could set element 1 to be drawn at Z = 0 and element 2 at Z = 0.0001, so element 2 will always be drawn on top of element 1.
A better way to achieve z-order would be to hack the engine and set the drawing order for each element in order to force one element to be drawn before another.
Also another problem with using three.js is that (at the time of writing) it doesn't handle 2D sprites very well.