А ведь PING на точно таких же RAW-сокетах в семерке работает нормально. Проблемы с блокированием recvfrom() начинаются только когда TTL меньше необходимого для достижения целевого узла, и в ответ приходит ICMP-пакет с типом 11 (TTL Exceeded). Вот этот пакет сокет уже почему-то не принимает и блокируется (или выходит по таймауту).
Проверялось в нескольких версиях Python.