1. Реши вопрос о том, как будет выполняться оплата и как "программа" узнает о том, была ли оплата. Иначе один человек покупает модули, вкладывает на торренты и всё, второй человек уже не покупает :) Скорее всего, купив подписку на систему оплаты и проверки лицензии, ты сразу купишь систему защиты программы от взома (бюджетную денуво).
2. Решив проблему оплаты и лицензирования ты автоматически решаешь вопрос разделения модулей. Не важно, будут это отдельные dll, скачиваемые по запросу или всё в одном ехе собрано - это уже будет разграничиваться системой защиты кода программы. А как конкретн осделать - как тебе будет удобнее.
То есть бесполезно просто выносить фукнционал в dll и посылать её по почте сделавшим донат в донэйшеналертс. Нужно комплексное решение. Есть бесплатные варианты, от хакеров-первокурсников могут защитить.
Если речь про мобилки, то есть стандартные средства конкретной платформы для "внутриигровых платежей" и средства проверки того, что было оплачено, а что нет.