in my opinion
first. make your data full with 4 float every unit both in hlsl and c++, forget your c++ ruler and habit, what you contact with is gpu not cpu, and also hlsl is just like c but not c, naturally there are big differents at asm level. if ok, forget order of readableness just align it.
second. Updatesubresource sounds great, i agree, but map and unmap is handy, obviously. next time, try map, you will like it
third. i do not know why i still find d3dx*** at directx11, is it pure one, if it is, en, d3dx*** is history.
ok, i wish it can help you, if someone has different opinion please let me know