I came to the same conclusion.
One partial answer to the files-to-read is to change compaction to guarantee log sstable files instead of the current ad-hoc behavior, where n is the maximum sstable "generation" number. (Where "generation" is the number of compactions done.)
For each CF, when you flush, you compact until there is nothing already at the same generation to compact with. For example,
flush 1: nothing to merge. memtable becomes sstable-gen0
flush 2: there is already a sstable-gen0 so you merge. now you have sstable-gen1
flush 3: no gen0, so you store there. now you have sstable-gen0, sstable-gen1
flush 4: 0 and 1 exist, so you compact (with the new one) to sstable-gen2
Generation tracking can be done in the sstable filename.