Happy to report that I have found the reason for the issue:
Once a WiFi connection is lost, it can only be re-instigated by a reset.
It was lack of enough free memory.
It had nothing to do with SPI or erroneous code (but solved by code of course by reducing memory usage).
This also explains why what was once working now was not.