Как лучше организовать процесс разработки?
Мне кажется, что тут более правильный подход — branch by architecture.
Т. е. вы реализуете в проекте IoC и включаете/отключаете нужную функциональность через конкретные конфиги для каждого клиента.

Кодовая база при этом для всех одна.
Рефакторинг может оказаться достаточно дорогим, но, ИМХО, branch hell — это еще дороже, если клиентов много.
Если брать во внимание, что вам нужно именно в виде отдельных веток управлять отдельными фичами (хотя на мой взгляд, лучше что-то с самим продуктом сделать, быть может разделить его на модули), то в голову пришло вот такое простое решение:
* мигрируете с svn на git (я не знаю, есть ли в svn функция, аналогичная rebase в git)
* в нем делаете отдельные ветки, которые все исходят от master-ветки
* затем при доработке или исправлении бага, после его проверки, вы заносите его в master
* во всех ветках для регионов, использующих эту функциональность, делаете rebase относительно ветки master (в этом случае, она возьмет свежую версию кода из master, и уже поверх них наложит ваши новые. В этом случае, багфикс применится ко всем веткам автоматически благодаря rebas. Если нет накладок в коде, конечно же, а иначе — придется помержить ручками).

Решение абсолютно не идеальное, просто ход мыслей, оформленный в виде ответа (: