Replace CAN with SPI to communicate with two microcontrollers
I came to say a big &quot;no&quot; because I thought you want to replace long-distant CAN with SPI when I first read the title. But then ...

I want to replace the CAN with SPI to communicate with two microcontrollers within the same board.

Anyway...
CAN is designed as a noise-proof hi-speed communication for relatively high distances. So it's unusual and unnecessary to use CAN for the MCUs on the same board. And SPI is well suited for that purpose. Another good option is the UART.

should I implement both Slave and Master SPI drivers in both uCs?

Normally, when it comes to the communication between the two MCUs through SPI, there'll be no strictly master or slave implementation as master or slave tag can dynamically change for either node (i.e. the sender node can be master and thus the receiver node can be slave momentarily). Implementation is quite simple and easy even for a software SPI.