Out of your choices, Dean Cain, hands down. His Superman had some heart and emotion, while Routh felt very flat and emotionless. Plus, I kept getting distracted by the fact that his hair reminded me of the Ken dolls my sister had as a kid.
But as for the question of the best actor to portray Superman in the last 15 years, that honor definately belongs to Tim Daly.