I like your method. Put them in a situation that relates to the job you expect them to do.
I have been employed by three companies in the past 22 years. Each time I moved on, I left on good terms with my current employer and listed my previous boss on my resume as a reference. In my current position, I do the technical interviews, generally over the phone or a lunch meeting. I usually prepare for the meeting by contacting the listed references and asking them about the applicant. If someone lists three college buddies, or three junior coworkers, or three people from completely non-related fields, then I have a pretty good indicator already that they were not respected by management or senior developers in their last job. I find a loose correlation between the quality of the references and the quality of the applicant.
In my interviews, I generally give a simple requirement and ask how they would solve it. I don't care if they know the details to implementing the latest and greatest algorithms or programming methods. I care how they approach the problem, what questions they ask, and how they think through the solution. Also, within ~10 minutes of questioning, you can determine if the applicant really knows programming or just knows buzzwords and for loops (and if you can't, then perhaps you are the one who just knows buzzwords.)
Talking to and assessing references can give you a good indication of work ethic and behavior.
Talking to and assessing the applicant can give you a good indication of knowledge and talent.
Between the two, I've been very successful in hiring quality developers for our company.