Choosing bridges by bw is problematic
We currently choose bridges by bw according to their advertised bw capacity. This leads to fun bugs, for example: Use just one bridge with capacity 0, bug legacy/trac#1805 (moved) is triggered but things work. Add another (working) bridge to the set with a capacity != 0: We never choose the bridge with capacity 0. Make the bridge with capacity != 0 nonworking: The Tor client breaks, because it wants to use the bridge with capacity. It doesn't try the other bridge, because it has a weight of 0.
This means two things: new bridges don't get usage as quickly as they could, because people won't choose them after starting up, and that one of two in-theory working bridges gets blocked, we might not try the one that is still good.
One obvious solution would be to just not weight bridges. I think that's probably the sanest choice for situations where some of your bridges will frequently be blocked, and others might not be - we don't really want to keep picking the non-working bridge more than we need to. Not sure if that has other unwanted side-effects though.