The way the crossfader works, is that it multiplies the opacity value of the layers assigned to it with its own value. So if layer 1 is set to 50% opacity and assigned to bus A, it will be composited 50% opaque if the crossfader is on the A side, at 25% opaque if the crossfader is in the middle, and it will be invisible if the crossfader is on the right. This works correctly for most blend modes, and has the advantage that its really fast.
You are correct that it creates a problem with blend modes like 50Mask and Multiply. In order for those to work properly, we'd need to composite the A and B busses first, and then composite these together according to the crossfader value. This would give the result you are after, but introduces two extra passes to the render pipeline, which slows down things quite a bit. I'll make a ticket and we'll do some tests with it though.
In the meantime, there are a few workarounds. Depending on what you mean by 'have the mask keep it shape', if you are just using one clip as a mask, you could of course just not assign it to the A or B bus. If you want to fade from one mask to another when you change clips, a combination of column triggering and layer transitions can also do the trick.
I hope that helps!