обычно приложение вызывает функцию libc getaddrinfo(), которой передаёт фильтр (можно пустой), в ответ getaddrinfo() возвращает цепочку связанных структур с информацией о записях. По моему, может даже сортировать, например, с использованием /etc/gai.conf
А вот инфу из цепочки структур приложение берёт и использует так, как ему хочется.
Вообще, ещё сервер часто отдаёт записи в условно произвольном порядке, наверное, оттуда самое случайное и получается - к.м.к., в связанных структурах от getaddrinfo() чаще всего записи возвращаются так, как их отдал сервер.