(Attaching modified and rebased patch)
So, after running some benchmark, I concluded that getOverlappingSSTables is not going to be a bottleneck. After all it's O(log n) operation.
But the problem rises if you iterate on 50K (or large number of) sstables. So I modified the patch to first sort sstables by droppable ratio in descent order, and skip iteration if it finds the ratio below threshold. I think this feature combined with the nature of LCS (fewer overlap among sstables) prevent a lot of calculation in findDroppableSSTable.