what are the differences between i/o expander, demultiplexer, decoder & bit register?
SPI normally only needs 4 wires for serial communications. CLK and CS are output, as is DO. DI is your only input. So look into the 74HC154 x3 for the outputs (1 of 16 can be low, or an inverted data output), and a 74150 for the input(1 of 16 inputs can be active). If 74150 is not available you can use a CD4051 which selects 1 of 8 input. Use 4 MPU pins for initial 1 of 16 input selection.

You can see where you can use some of the MPU pins to expand on the 16 SPI ports you now have. If you expanded them by using 4 more address bits using a 74HC154 as a address decoder, now you can drive up to 256 SPI ports.

Seeing as how you only need 90, you don't buy or draw what you don't need. Also the CD4051 only gives you 8 inputs, so the less IC's the better.

So you used 4 pins for the main SPI port, 4 more pins to expand out to 16 ports, and 4 more pins for 256 port, or just 3 pins for 128 ports.

Just to clarify part descriptions, the 74HC154 is 1 of 16 decoder, using 4 select lines to select 1 of 16 outputs. The 74C150 is a 16 to 1 encoder, using 4 select lines to select 1 0f 16 inputs. The CD4051 is an 8 to 1 encoder (bi-directional), using 3 select lines to choose 1 of 8 inputs.

There is no register needed, as the MPU can latch any I/O pin, which is what a register does-it 'holds' data or control data to define if a port is an input or output. The 7 or 8 address lines are decoded to select 1 of 90 SPI ports.

EDIT: Because of the common drive pins, a 74AC541 buffer can be used to boost the CLK and DO lines for parallel connections. The DI for each SPI port can be connected to a series of 8 input NOR or NAND gates to sum them together. This leaves only the CS pin which has to be multiplexed out to 90 CS pins on the 90 ports. At some places data inverters may be needed.

This is an absurd exercise as it is not rational to expand SPI to such a great extent.

I would draw this for you, but it would take many pages of basically duplicating the same thing. That is at the heart of multiplexing / de-multiplexing.