I think at the moment, the sparsity construction doesn't differentiate between on-diagonal and off-diagonal blocks (because it doesn't know that the matrix might be distributed).  So that would need fixing up first I think.