[HLSL][DirectX] Fix resource lowering when using structs with `select` (#158361)
Fixes #156550.
The `select` instruction should be using the struct values themselves
rather than pointers to temporary allocas.
This PR also adds an array test for select in `select.hlsl`.