CAN- "Messages have ID's not nodes"
I think you're misunderstanding this:


  I heard many people say that CAN message have IDs and not nodes.


This doesn't mean that every message sent on the bus should have a unique ID, or that you should never be able to identify which node sent the message. It means that IDs are best used to indicate what kind of data is being sent, not where the data is going. For example, if you have a temperature sensor broadcasting data, you can assign an ID number to mean "temperature data from sensor #1". Then any node that cares about temperature data can receive it. Many (most?) CAN controllers can easily send and receive multiple IDs, so it often doesn't make sense to say that a node has only one ID.

In your case, you could make IDs for "command from master 1 to slave 5", "command from master 2 to slave 8", "response to master 3 from slave 7", etc. I don't know enough about your system to say whether that's the best way to do it.

I don't understand why slaves need to respond to each master separately. If this is a majority-vote system, shouldn't one slave response be enough? You could have separate message IDs for errors.

Remember that all nodes receive all messages. It's up to the node whether it stores the message or not.