I will use the standard doc strings.

I intended to actually use the T for the splitter, but forgot, I'll use it per your last advice.

The splitter is used to split the rows to groups and values. Since there is no way to add another dimension to the matrices, both the group and the row id will have to be encoded into the row field and be separated later by the splitter.

The way I wanted to implement it originally is just to have a Row(or Col)Vector of Matrix and then it's just the pointwise product of these vectors with the Ring being a MatrixProduct. The problem is that Scalding does not support Matrix of Matrices (I understand it has something to do with cascading). Having this limitation, I implemented this new operation.
Yes, that is equivalent to a standard product to hadamard product with a block diagonal matrix with the difference that it doesn't actually perform these computations. I guess a simpler way to do it is generating the block diagonal matrix, multiply the second matrix by it and then multiply the first matrix by the product, but I'm not sure it will save a lot of computation.