There is a marked improvement in the handling of TrustZone in nrfjprog 10.11.0 and 10.12.00, but it seems it's still not quite all the way there. I can do:
nrfjprog --memrd 0x00010000 nrfjprog --memwr 0x00010000 --val 0x00000000
and am able to read and write to the Non-Secure region of flash, which was not the case previously. However, if I try to program that region with a HEX file:
nrfjprog --program [file] --sectorerase
it'll still fail with the usual "The operation attempted is unavailable due to readback protection..." The HEX file programs correctly when flashing without Secure being locked out, and the first line should be properly specifying the starting address:
:020000040001EF
So, seems like there's still some operation in the pipeline for programming that isn't in the memory read/write pipeline that's preventing the programming from happening. My own lower-level programming tool that uses the pynrfjprog library and the debugger registers still works with the setup and file, so it shouldn't be an issue with either.