Assuming
(= a (table 'foo 'bar))
(no-side-effects (= a!foo 'baz) a)
(let a (copy a) (= a!foo 'baz) a)
You would still have to think about constructs like def and mac, but at least this deals with shared structure of lists and tables.
Maybe something like http://arclanguage.org/item?id=3572 ?