Во-первых, вы не должны использовать расширения для этой цели, потому что слишком большое расширение всегда плохая идея.
Во-вторых, вы совершенно правы, что вы не повторяете свой код, а группируете его по повторнымчасть кода не является хорошим выбором.Предпочтительным способом является группировка вещей, имеющих смысл в реальном мире, по уровню абстракции.
И последнее, но не менее важное: если у вас есть сомнения: отдельно или нет, расширение или компоновка, защищенный финал или только защищенный, попробуйте написать модульный тест для этого класса, и ответы придут очень быстро.