So the introduction of [var _] as you did should improve sharing, but I think if its failing with a stack overflow then it might be the use of deeply nested recursive value (of type Entry) that might be the other problem. Reading the code and this, Map v8.0.0, it's finally here, I wonder if it’s the support for the previous and next pointers,preserving insertion order, that (I guess) are linking all entries in a long list.
Just a hunch, I’m afraid. Could you record the hashes of previous and next entries instead and link them that way?