Одним из способов было бы использование объединения. Вот так:
(SELECT a, b, distance FROM table WHERE distance = 250 LIMIT 2 ORDER BY RAND())
UNION
(SELECT a, b, distance FROM table WHERE distance = 500 LIMIT 2 ORDER BY RAND())
...
ORDER BY distance
Я могу придумать, как получить по одному с каждым запросом, используя отличный = /, но, как я сказал, это принесет вам только один.