Thanks for the help.
Specifying -maxh for the planes on the side basically works, at least with respect to avoiding the "ERROR: Problem in Surface mesh generation". However, automatic surface identification seems to interact with this feature in hard to control ways. On top of the thin box to which -maxh is applied, there is a huge box. But depending on which box is defined first, the final mesh gets a totally different density. I attached two larger examples (maxh_upper.geo, maxh_lower.geo), where the effect is easy to see.
I tried to fix this with the attached patch (maxh.patch.txt), but the density on some edges still depends on the orders, but I don't know exactly why yet, i.e. where exactly it goes wrong. (Maybe segment.surfnr1 and segment.surfnr2 are not as reliable as they seem.)
The functionality with the prismatic elements is nice, but it probably won't help me. My main structure is normally embedded into the thin layer. (I tested whether I could use prisms surrounding my main structure, but netgen then stops because the surface mesh gets inconsistent.) I attached a real non-simplified example from my application (structure.geo, it still fails in SwapImprove in the end, even with my patches). All that huge radial symmetric part is just a poor man's boundary condition, in a certain sense. (I do have a solver to that radial symmetric part, just the coupling to the FEM solver has room for improvement.)