Block Sparse Matrix

I would like to deal with very large sparse matrices with dense sub-blocks; for example, block arrow-head matrices, or a block periodic tridiagonal matrices.

I know about the BlockArrays package. That supports blocking of sparse matrices. I found a package called “BlockSparseArrays” but it seems to be abandoned.

It is not convenient for me to first create a sparse matrix and then block it using BlockArrays. The converse of starting with an uninitialized BlockArray is also not scalable for me as I have a large number of partitions, and I am assuming BlockArray will allocate O(N^2) pointers at least.

Before I start writing my own BlockSparseMatrix code I was wondering if someone had a way to use SparseArrays and BlockArrays to achieve what I want?