Две гипотезы:
1. Как уже говорили keep-alive (если вы создаёте объект Transport и используете для нескольких запросов). Тогда пока соединение не закроется, оно продолжит работать даже после изменения hosts.
2. Может быть, ресолвер в Windows не проверяет свежесть файла hosts перед каждым ресолвом адреса, а кэширует его на несколько минут, например.
Гипотеза 1 проверяется отключением keep-alive (созданием нового транспорта перед каждым запросом), если вы его используете, конечно.
Гипотеза 2 проверяется какой-нибудь утилитой типа filemon - посмотрите, как ваш процесс читает файл hosts. Если он его каждый раз читает - значит гипотеза не верна. Если раз в несколько минут, то верна.