When I used offset surface to thicken it, the edge fillet looked like this at the top:
So I tried filleting the corners of the rail curve first, but then it failed on the surface offset:
I tried your suggestion of offsetting the profile curve to get the thickness, but the fillet didn't do much better:
The cap & shell made it work ok. Obviously it has to do with how that top face gets constructed, but I don't know enough to do it myself.
In any case, there were a lot of problems in the middle area fillets, with holes in the surface and so on:
Eventually I managed to get a closed surface out of it. It depended on the wall angle for some reason. It seemed pretty random and finicky.
Fusion 360 seemed to have no problem with it:
The same in Onshape, gave me no trouble:
There are a lot more options in Rhino's fillet command - but at least the other two got the job finished without complaining.