I don't know of another module that allows this. My suggestion would be to take the source of one of those, pull out the algorithms you want, and modify them to your need.
In the case of Set::Scalar, it looks as if all you'd have to change is Set::Scalar::Base::_strval (but I haven't tried it, of course).
I'm actually surprised to find that they use refaddr explicitly. I was hoping to find that you could get the behavior you want by overloading either stringification or equivalence, but that's not what I found.