TileDB can handle most of your requirements today and we are working on the "row id labels" which we call axes labels[1]. We are looking to get axes labels support completed in the next 2-3 months. TileDB supports fixed size and variable length attributes so you have flexibility in how to handle your 256 byte and UTF-8 fields. On the distributed computing front, TileDB has integrations with Dask[2] and Spark[3]. We are happy to answer any further questions you might have on TileDB or how to adapt it to your use case.
[1] https://feedback.tiledb.com/tiledb-core/p/support-axes-label...
[2] https://docs.tiledb.com/developer/dask/quickstart
[3] https://docs.tiledb.com/developer/spark/quickstart
Disclosure: I am a member of the TileDB team.