While estimation of num hits * log(num qieries) is technically correct, the comparison is only fair when inverted index hits are currently in memory. That's why you probably need to introduce inverted_index_penalty. I'd think that just a simple flag to control whether to hit inverted vs forward index for filtering would solve this problem.
I'm not totally against the change as I think it's still better than (validFreqCount<<1) < totalCount