OK, after a few days pondering this, I've reached some decisions about what should happen at the top and the edges.
Essentially, I'm going to try to emulate the behaviour of the Amiga version as closely as possible, since I've aimed to do that elsewhere in the engine and it makes sense to follow suit here. This is at least until I can figure out how to dynamically resize levels, which I can't see happening anytime soon.
So,
the sides are now solid - simple, and the DMA levels can be resized slightly to make reaching the edges impossible wherever necessary.
The top is different: it's open, but access to the top is restricted as much as possible. It took many cups of tea, several walks and a couple of long baths for me to reach this decision, but in the end I think it's the right way to go. I'm generally not in favour of the engine itself backroute-fixing levels for the designer, so that isn't actually what swung it.
The eventual decision is based on 3 factors:
1) Lems are not visible when walking across the top of the level, so even though they are
accessible, the gameplay no longer feels intended - it really does feel like an overlooked engine bug, and one which detracts from the game's aesthetic considerably.
2) Classic Mode's deactivation of skill shadows would make this scenario basically unplayable, and I don't really want to implement anything that would ruin the experience of playing in Classic Mode.
3) It's not possible to access the top of the level on the Amiga version. This last reason holds less weight than the others, but is good enough as reassurance that I've made the right decision.
So, here's how it works:

This image shows the top-of-level checks that are needed in order to prevent lems from accessing the top of the level (but without killing them, and without turning Builder lems around). The green blocks represent terrain, the blue line represents the starting position of the lemmings.
The red line is Y = 0. Any lemmings whose Y positions reach this line will turn around to come back the way they came. The first terrain block shows an edge case where the terrain is arranged in such a way that ascenders are able to reach Y = 0. If this happens, the lem simply walks back along the 1px-high platform and drops back into the level. For the duration of them being at this position, no skills are assignable to that lem except permanent skills (which have no immediate effect anyway).
The Builder bridge shows the lem's position when they place the final allowed brick - from here, they walk
forwards from the end of the bridge, as per Amiga behaviour. Platformers, Stackers and Freezers can be assigned from this point, but Builders can not. The reasoning here is that Freezers and Stackers are generally meant to turn lems around anyway, so expected behaviour is upheld by the terrain checks mentioned above, whilst Platformers will simply continue forward at the same pixel as the top Builder brick.
The vertical green block to the right of the above image shows where Climbers check the top of the level. Any higher than this allows Climbers to transition to Hoisters, which is generally unproblematic in itself but I think that simply Falling is better, and mimics Amiga behaviour anyway. If the lemming is also a Slider, they will slide back down as expected.
Meanwhile, here's the special case of Jumpers at the top of the level:

I've always thought that Jumpers (and Projectiles) should continue their arc and land back into the level if there is no perceptible obstacle in the way. So, that's what now happens!
The first arc is self-explanatory enough, whilst the second arc is only slightly more complicated; the Jumper will land on top of the terrain, but since it's now at Y = 0 the above check will kick in, turning the lem around - they will then fall back down facing away from the wall unless they're a Slider, in which case they'll slide their way back down.
Unfortunately, the only ways to completely guarantee no above-level access are to make the top deadly or to have the engine always remove the topmost row of pixels at Y=0 so that there is never terrain at this point to be walked over. Both are heavy-handed and undesirable solutions to the problem. I personally prefer the approach of fixing it as far as is sensibly possible, and letting level design deal with the rest.
Thoughts, comments and suggestions welcome. SuperLemmix is in very much a state of fluctuation at present, and my mind has been changing a lot on things over the past week, so it's a good time to speak up if you have any thoughts to share on this.