Will adding Ethernet shield reduce the IO count of Arduino?
You should use a Mega if you really need so many gpio pins.

Arduino Ethernet and WiFi shields and their clones use 3 GPIO pins with SPI function with connection on ICSP header. Next they use the Slave Select signaling pin 10 and the SD card Slave Select signaling pin 4. The shields are compatible with Mega. So you should still have enough pins.

esp8266 can be connected to SPI. then it uses the same pins like the Ethernet shield except of the SD card slave select pin.

if you connect esp8266 to Serial port, then all the pins are free. Mega has 4 Serials.

esp8266 is cheaper but you need to connect it with level shifters and have a good power supply. there is no good esp8266 shield for now. The Mega + WiFi board from Robotdyn has the esp8266 on board with Serial connection.