The article that you were linked to is a great starting point. It was written for Legacy, but the principals are the same.
You are already using BlynkTimer, but not as well as you should - you are dong a millis() comparison in your void loop which ought be an additional timer process.
You can also use non-blocking delays using BlynkTimer.
More info on all of this here…
The timers that you do have appear to be used to poll physical switches, and I suspect that you’d be better using interrupts with a debounce routine for this.
I’m not sure that it’s possible to dictate the channel that your device can choose in the sketch. I think that this is probably best done in the router or WAP.
I’m guessing that there is electrical noise that is interfering with your devices? Monitoring the reported RSSI would probably be beneficial, possibly via your LCD display?
When you used an ESP8266 with external antenna what exact hardware was this?
If it was a Wemos D1 Mini Pro did you move the zero ohm resistor to enable the external antenna?
What exact hardware are you using now?
Pete.