OK, seems as if I've managed to whip up a hash table implementation that allows the user to register their own [{eq test}, {hash fn}] pairs (there's four pre-registered, for EQ, EQL, EQUAL and EQUALP). It should be ASDF-installable (package name is "genhash") and there's a CLiki page in the obvious location.
It's not been exhasutively tested, but it does, indeed, seem to work. If a hash/eq-test pair taht doesn't follow "(eq-test a b) => (= (hashfn a) (hashfn b))" things will most probably break in *interesting* ways.
