This would need to be pervasive; you'd need, essentially, one version of the struct for working with entries on the stack, and another for working with them in the heap.

So a typical put operation would look like this: 
1) do a get on the khash get back a heap keydir entry (if found, could be entry or entry list)
2) copy that into a stack entry, do all of the comparisons
2a) if it isn't found, make that stack entry into a heap entry and put onto the heap
2b) if it is found, you'll need to make the stack entry into a heap entry on 2 of 4 paths, in order to fetch the heap pointer

You'll also need to make the stack entry into a heap entry to remove as well.

I just don't see the win here, but happy to have a longer discussion elsewhere.