Optimized SipHash implementation

This makes hashing a fair bit faster for long strings and non-string objects:

    bench_compound_1: 70 -> 56
    bench_long_str: 795 -> 525
    bench_str: 32 -> 32

This helps with #11783.