It is my understanding that multiple SPI slaves can be controlled by one SPI master as long as all code is running in a single task.
That said, I think the issue is that two SPI masters are defined using the same GPIOs for SCK, MOSI and MISO. One SPI master is defined via M5Stack library (for TFT and SD card) and another is defined via spi_master (for LAN).
Have you considered using an Arduino library for Ethernet as well, e.g. this one.
I found an Arduino web server example which uses Ethernet and serves the index.htm file from the SD card. Please have a look here.