Do you have any idea what we should change/add to the hashing function?
I'm working on this same problem, and I think you're taking a viable approach. You might want to hash on the way into your function and on the way out so you don't need to worry about cryptography and focus on making a GPU resistant algorithm.
Hash = SHA256(MAKEWORK(SHA256(Block)))
Where MAKEWORK is your GPU resistant algorithm.