Сама система не может определить, кому принадлежит icmp пакет. Поэтому она отсылает пакет абсолютно всем открытым icmp сокетам. Твоя задача определить, твой это пакет или нет. Задержка может происходить на recvfrom. Когда на сокете нет еше сообшения. Поэтому в своем коде я переводил сокет в неблокируюший режим. Если нет сообшение, то программа продолжает работать дальше, только длина принятого сообшения равна нулю и WSAGetLastError даст код ошибки WSAEWOULDBLOCK. Описание работы в неблакируюшем режиме есть в статье
https://club.shelek.ru/viewart.php?id=153