As I see there are two ways...
One - to become a proxy between the client and the server - in this case you can measure the response time and decide which server is the fastest and use in the next round... While it is possible I would not use it as all that proxy thing is fairly complicated and has performance penalty..
Two - use a performance counter (
PerformanceCounter Constructor (String, String, String, String) (System.Diagnostics)[
^]) - maybe there is one already, or you can write your own (
How to: Create Custom Performance Counters[
^]) - to check what is the last/average response time of each server and pick the best... I would recommend this one...