Cool. Thanks for putting some thought into this I suppose that unrestricted referencing is one of Nim's design decisions in the language as a whole as well. It is perfectly valid to hold multiple mutable references to one object. Data can change under your feet at any time with this setup, so this is more like Java, whereas I was thinking more with the Rust mindset...
So probably I shouldn't really try to do anything unless I have a structure that could actually cost memory safety when abused, in which case the runtime-checked instance state "lock" probably makes the most sense.