Hollywood casts based on type. Jim Carrey is a type. Harrison Ford is a type. Denzel Washington is a type. Julia Roberts is a type. When actors rebel against type, generally speaking, they get nowhere. (Julia in dramas, Jim Carrey dramas, Harrison in a Russian accent, etc.) This is true not just of actors, but of roles, a few of which become iconic types unto themselves. As a result, whoever plays those roles becomes forever associated with them, and can't get out from under the weight. Christopher Reeve in Superman. Mark Hamill in Star Wars. I would add Caviezel to that list.
Nor do I think Caviezel is whining. Mark Hamill has talked about his frustration at not getting other parts in interviews, as did Chris Reeve. It's hard to be an actor who wants to be stretched creatively, only to find that Hollywood will only let you stretch so far.