It's true that we might want `ditab` to restrict key types to be unsigned8/16/32 bit ints for safety (but this can create API frictions). Anyway, I am happy to make specific updates/take PRs, but this thread has gone from its highly general sounding topic to even more general fusion questions to even more specific undescribed "specialized solutions".
To answer some of your initial questions which I agree went largely unspoken to, I would say two seqs, the sparse one pre-allocated and the other dense one growing from zero, maybe with an API to "batch grow". If you want to economize on space for the sparse one you can use something like `sequint` (which may be able to be implemented more cleanly with the new-ish "bit slices").