Optimize fingerprinting time and repointerize fingerprint usage

Some benchmarking results: fingerprint `Less()` worst-case comparisons went from 2000ns/op to 150ns/op only due to getting rid of the string conversion and comparing fingerprint fields directly. It went down further to 50ns/op when pointerizing the passed fingerprint. The common case (fingerprint `hash` values differ) now even takes only 15ns/op.