Here's the problem: you're dealing with a multiple prisoners' dilemma situation here. Theoretically, the best solution for all (candidates and companies) is to have a thorough, standardized, and real-world based interview process. If every company cooperated, then you could have that. But, when there are companies out there that will bring candidates onsite for ~5 hours after a little more than an hour's time commitment, that means I could theoretically do 5 of those interviews in a week. No other company is going to start demanding multiple days of an interviewee's time given that every other company's process takes ~1 day of active participation by the candidate. So, you need to limit your "thorough, standardized, and real-world" process to taking no more than a day.
Here's a process that might work, that I actually would participate in:
1. ~20 minute recruiter chat to establish basic levels of fit/compatibility.
2. ~45-60 minute phone screen.
3. Onsite consisting of 1 hour behavioral/cultural interview, and 3-4 hour programming task, preferably based on a real problem or task that arose in the company's code base, suitably extracted, simplified, and scrubbed of proprietary information. Internet resources are allowed, as is asking any questions of the interviewer, without penalty.
You could bring me in at 11 AM, do the behavioral interview, take me to lunch, then have the afternoon to do the programming task, and have me out by 4.