Cheapest way to get a CAN signal
If you have a problem with serial protocols like SPI over 5 metres then the simple answer is to lower the clocking rate for receiving data back from remote devices. Going to something like CAN is not a simple solution to my way of thinking but of course this may need to be done if distances warrant it and you can't lower speed BUT think about this....

Putting a micro at both ends (or the remote end) to allow CAN type communications means your overall throughput of retrieving data from a remote device is going to be limited without going to a significantly higher data rate over the CAN link and you'll have to tailor your current master SPI transmission to be compatible with CAN and this might mean that instead of just sending an SPI clock and CE you'll have to send a more formal request for the remote data to be passed back to you.

Simplest way is to reduce the clock speed to suit the cable and, if necessary use balanced drivers and receivers i.e. make everything work with the delay that you get by introducing the 5 metres of cable. It's easy when sending data out to a remote device - both clock and data arrive largely in sync but trying to get data back is the real problem on long distances - the receiving device gets the clock and syncs up it's data with the incoming clk but by the time it arrives back at the master things are skewed with respect to each other. 

That is why I suggest considering clock speed reduction - the skews won't be as bad (as a percentage) and are less likely to give errors.