1. Calculate a standard hash function like SHA256. Then take the result, split it into chunks, and apply something like this to each chunk:
2. Calculate the natural logarithm of the input.
3. Take, say, the 4th through 10th digit of the result and use this value to decide among many different candidate functions for step 4.
for example:
4.0. If the value from step 3 is 0, then calculate ln(ln(x)), take digits 3 to 8 of the result and xor this with the original input.
4.1. If the value from step 3 is 1, then calculate ln((x+sqrt(x+5))), take digits 2 to 7 of the result and add this to the original input.
etc (potentially tens of thousands of different functions for step 4)
5. repeat a few dozen times
Let's see how GPUs do on that.
Just a thought.