Resort to linalg if sparse does not have block_diag support