по поводу классов , чтоб не грузить лишние - я бы сделал автолоад классов
по поводу кэша - используем ключи
по поводу коунт запросов - первое это то, что они не сильно напрягают, второе - опять же можно кэш пользовать, третье - не проще коунт хранить отдельно? имхо лишняя таблица или поле, и не нужно сильно выдумывать запрос