BUG: sparse: fix int32 wraparounds in BSR matrices

The issue here is that the nnz of BSR is not bounded by the index data
type, which only bounds the number of blocks.  The block size may easily
overflow int32.
BUG: sparse: fix integer overflow in CSR matmat
TST: sparse: add tests probing for int32 overflows