I want to run a block Lanczos block-tridiagonalization on a hermitian, sparse matrix (of relatively small size $\sim 10^2 \times 10^2$). However the matrix typically has many eigenvalues that are highly degenerate, and the eigenvalues are closely spaced. I only care about the invariant subspace of the initial vectors, so it is desired for the procedure to terminate when the elements of the subdiagonal become close to zero.
However, when I try a block Lanczos tridiagonalization in this way, it is numerically unstable because of the above mentioned eigenvalue structure (as e.g. discussed in the answer here). I am already re-orthogonalising all vectors at each step of the Lanczos procedure.
Are there any techniques with which to make the block Lanczos iteration more stable under these circumstances? Is this already implemented in a code?