Based on the input from BoppreH, I was able to get a version of the arithmetic-based hash which outperforms even the C-implemented 'sorted'-based version:
primes = list(historic(26))
primes = {c : primes[ord(c) - ord('a')] for c in string.lowercase}
def prime_hash2(s):
res = 1
for c in s:
res = res * primes[c]
return res