Классы в одном пакете должны сотрудничать друг с другом. Если C не должен иметь такой же уровень доступа к A, какой имеет B, C не должен находиться в одном пакете с A и B. Поэтому ваш первый вариант - переместить C в другой пакет.
Одна из возможных альтернатив - сделать B вложенным классом в A. Как вложенный класс, он может получить доступ к закрытым членам в A, к которым C не может получить доступ.