Does anyone know how one might run two bitcoin full nodes on the same machine with both these nodes sharing the same
chainstate files, is a symlink to these files enough or must something else be done?
This is not possible beyond providing both nodes identical own copy of the chain before initial sync. Both nodes will attempt to acquire their Bitcoin data resources via the P2P network independently, and index these accordingly, so they cannot share the same store.
What is possible though is to configure the nodes to be permanently maintain a peer connection to each other. TX and Blocks organized by one peer will be seen and then organized by the other.