CAN bus arbitration for data field
So the question is how the CAN arbitration within the data field works.


It doesn't. The arbitration field is identifier + RTR bit. If two nodes attempts to send the same identifier but with different length or data, there will be a data collision resulting in error frames.

I know from experience that SAMC21 specifically goes haywire if you attempt to send different data with same id. It will sporadically send out error frames and soon go error passive. I encountered that situation myself when I was doing stress tests for a project with that MCU. Which isn't the MCU's fault - it follows the CAN spec.

One possible solution could be to time multiplex different data with the same id, so that they are never sent at the same time.