...we may need to revisit that and make structures valid a source or target everywhere it makes sense.
Yes please!

This is where it can get tricky.
If you understand C unions, you could do it memory based using MEMCOPY if you laid out your UDT EXACTLY like the Holding Register layout.
If you have never done C unions or what that means or looks like, then just use the new COPY instruction. Casting is allowed.
Well I don't know C but I did figure it out already. You provided enough tools in the configuration, along with that tip and the error messages in MEMCOPY. I did have to COPY the N0 to N7 before the MEMCOPY so N7 would get broken out into the bits in the structure for the last 16 items. That was just a lucky layout on my end.
But I am not sure how well this will work for me in the real world. My test was just a subset of what I would like to have (words to be written via MWX as well as MRX reads in the same structure.) Add in the tendency for manufacturers to randomly move things around and this could get ugly in the real world.
Seriously, for this one product, ModbusRTU requires I add one to the offset and ModbusTCP requires I don't. And some things get moved around product to product or even between revisions of the firmware.
Is there a way to populate a Data View with all of a structure's members without having to pick them one at a time?