apk isn’t any more or less than using dpkg by itself, or opkg. As for what I use, I use Arch at home and Ubuntu on my virtual machines (because they’re officially supported by my hosting provider). They work for me. I like them.
That’s understandable. However, pf (OpenBSD’s firewall system) is incredibly logical and easy to use. I never expected to write a fully operational (bloody thing worked the first time I tried it!) firewall ruleset on a two hour flight from scratch.
I had something similar happen in one of my ESP8266 projects (also running MicroPython). What I wound up doing was, every five wall clock minutes (maybe a bit sooner than that, for your case) I had my firmware do a local_networks = wifi.scan() just to exercise the wifi functionality. If that failed I have the code do gc.collect() followed by sys.exit(1), which causes the 8266 to reboot automatically.
No, I don’t. My best informed guess is that the wifi connection’s state machine gets stuck once in a while, it misses a couple of packets, and then sits there doing nothing. So, by kicking it a little it doesn’t get a chance to freeze up.