Is there any way to use spi flash to store the firmware and have all the features
In theory, it could be done. An SPI flash chip could share the bus with an SPI display. One pin and an inverter could provide the chip select for both (with one selected when the other isn't).
The MCU could have a bootloader that provided a menu on the display to select the desired feature, or feature set, and then load it from the flash chip into program memory for execution. Control of the menu could be via push button and rotary encoder, as is already used. As an example of something similar, the ATmega32U4 based
Arduboy game system can have hundreds of games on its SPI flash chip and can load any one of them in to program memory for playing (one at a time).
Since the tester runs at 5V and SPI flash is usually max 3.3V, you would probably also need a regulator and level shifters.
Whether anyone would go to the effort of designing the hardware, implementing the bootloader, and splitting the code into separate functional blocks, is another story.