I don't think it's as bad of a format if you just change the premise to a remote hire or something. You need to do a lot more communicating. But there is really no way to be totally sure about someone.
I also find it mildly insulting that essentially i'm interviewing for a job I don't know i'm going to have, as if I had no choice in what I do, or my choice was irrelevant. If I get hired for a Perl job, don't put me on a Java team, because I hate Java. They could also just skip certain interviews by asking if I have any interest in X team in the future, or if I have any experience with it.
I will say I did appreciate and enjoy my own experience with Amazon - two phone interviews, possibly some code sample, and an in-person. Really nice people. Just an unfortunate waste of time, especially for the interviewers.