Perhaps I'm myopic after working too long with Clojure's data structures, but isn't that exactly what you want? I don't understand the problem with this.
A conversation is a chronological, immutable list of entries. A conversation can be parented to an entry in another conversation, and thus inherits that parent's older conversation entries starting from that entry.
I realise this isn't implemented yet, but does this mean that if I use /tree to go back to a previous point in my conversation, I'll actually get a new conversation rooted at the junction point in the previous conversation? I'm struggling to understand why this is preferable, I use /tree to jump around a lot in my conversations, and it seems like I'd end up with a lot of parallel conversations. With something like /tree, would those conversations be grouped as part of the same conceptual session, or are they then completely independent forks?