You have a few options…
1 (simplest) keep your void loop as it is, and put some Blynk.run commands in your check for doorbell, check pattern and open functions, so that the Blynk library gets its share of attention.
2 increase the Blynk heartbeat timeout beyond the default 10 seconds to avoid unwanted disconnections
3 a combination of 1 and 2
4 go for an ESP32 processor and run a multi-threaded sketch which uses both cores of the processor. There are a few examples of how to do this, including this one:
Speaking from personal experience, I wouldn’t touch an Arduino + Ethernet shield combo ever again. I wrestled with this setup, and with multiple Ethernet shields, for months. I did all the tricks with capacitors across the reset button, and code to ping external websites and reset the device if the pings failed, but I couldn’t get a system that worked reliably 24/7 without manual intervention.
The Uno + ESP-01 combo is somewhat better, but still no match for an ESP8266 or ESP32 with native IoT capabilities.
For those reasons alone, I’d go for the ESP32 option.
Pete.