Great write up and as a Cassandra practitioner over last 7 years I agree with your analysis. We’ve experienced some interesting Cassandra query issues in the past and the root cause always lies in the way developers query it (CQL). Over past one year I have tried a variety of Cassandra-like DBs but they all have same CQL limitations.
Have you seen YugaByte DB? It supports most of CQL with additional enhancements such as a JSONB data type. They call it “YCQL”, and it solves these very problems you pointed out.
• It has a Google Spanner like design and supports high performance secondary indexes. The user can choose if these indexes contain the primary data or a reference to the primary table.
• The currently do not support range based indexes, but it is in their roadmap I believe.
• And because of its strongly consistent design, tombstones and NULLs are not an issue in YugaByte DB.
It should be easy to get your Cassandra app running on this. I have tried it, you might want to check it out.