Оо, дорогой друг, добро пожаловать в мир извращений и костылей.
1. Заводим хайлоадблок в котором записываем id товара и его цену в момент работы компонента каталога, перед самым формированием кэша, обязательно тегируем кэш. И вешаем на крон обработчик который постоянно бегает по каталогу и проверяет цены (с учётом групп пользователей), если полученная цена не соответствует той что записана хайлоадблоке, тогда сбрасываем соответствующий кеш по тегу.
2. в ключ кеширования товаров добавить дату изменения правила работы с корзиной. Дата изменилась => кеш устарел.
3. все области с выводом цен в шаблонах подгружать аяксом (аналог композитного режима).