> XOR is not a great choice here. Consider that 2 copies of a row give the same result as 0 (or 4, 6, etc).
That indeed is a major flaw. You have to use another commutative operation that doesn’t destroy entropy. Addition seems a good choice to me.
> And even without multiple copies of rows, you can force any hash you'd like
I don’t see how that matters for this problem.