### Conclusions
I hope my analysis was useful but there are too many things in play and some of my assessments may be wrong, so be aware that there may be errors and point them if you find them! I will also keep thinking to see if I find them or counter examples that change my opinion, there is still a lot to think here.
Having said that, my current opinion is that we should implement (a) + (b.1) + (d.2), but also seek for alternatives that just involve (a) and some way of solving the swizzle problems (if we can make sure that they cover what (b) + (d) does), like the mentioned lowering of swizzles as component-wise stores.
Since I don't think that IR code readability alone has priority over functionality, and AFAIK we can trust the drivers to do vectorization for us, I also think we should defer (c) unless we find an actual feature that requires it.
There is also the alternative of using hlsl_deref·s instead of mere nodes as texel_offsets, but IIRC Zeb has good reasons to not go in that direction.