DNS сервер всегда отдает все записи запрошенного типа для данного имени, в тч все MX/SRV записи.
_Клиентом_ выбирается MX с минимальным весом, в случае его недоступности или нефатальной ошибке отправки - с более высоким весом и тд, если у нескольких mx одинаковый вес - порядок между ними выбирается случайно. Поэтому клиенту нужны все MX записи. Примерно так же и с SRV, но там приоритет обеспечивается порядком priority и в рамках одного приоритета выбор между хоставми производится случайно, распределение вероятности задается весом. Т.е. берутся все хосты с минимальным priority и среди них выбирается случайный, но не равновероятно а в соответствии с весом (например если у одного вес 100 а у другого 200 то вероятность выбора второго вдвое выше). Плюс клиент может еще и рассматривать альтернативы между разными сервисами (например между _smtp._tcp и _smtps._tcp) или отдавать предпочтение определенному порту или сети.
На стороне сервера может быть лишь реализован round robin - случайное перемешивание записей, при перемешивании веса и приоритеты не учитываются. round robin требуется стандартом но по факту делается не всеми, например гугловые резолверы (которые 8.8.8.8) его не делают.