Regarding this POW problem, instead of replacing the SHA-256 POW by something else, we could change Bitcoin so it accepts two POW algorithms at a time, lets say a CPU one and we keep SHA256 also, each algo having its own difficulty, a block being valid if signed by either algo.
This way ASICs would have to compete with CPUs with a fair ratio, and probably disappear after some time because of the costs.
Maybe one could even use PoS to vote on the ratio...