Ok, i think i undestand your "performance" issue for not reuse finder … because you have a singleton model for all finder you need to erase the search scope between every call.
So i made this "hack" for my function :
defaultCriteria = clone $model->getDbCriteria();
$res = $model->findAll($criteria);
$count_criteria = new CDbCriteria();
$count_criteria->condition = $criteria->condition;
$model->setDbCriteria($defaultCriteria); // Hack for reuse same Model
$count = $model->count($count_criteria);
Why don’t you call model() a second time, as it is shown in the upgrade notes?
EDIT:
I see, you supply a $finder as method argument. With the above change in mind, maybe that’s not a very whise design decision. If you can, it might be worth to change that piece of your API.