Пошел дальше по стеку вызовов, обнаружил где лежит корень проблемы.
А проблема в методе
GetStakeModifierSelectionInterval.
Вернее в том, что новое генерируемое значение
nStakeModifierTime не попадает в промежуток возвращенный этим методом.
Там условие
while (nStakeModifierTime < pindexFrom->GetBlockTime() + nStakeModifierSelectionInterval)
Соотвестенно чтобы цикл закончился надо чтобы значение
nStakeModifierTime стало больше чем
pindexFrom->GetBlockTime() плюс этот интервал. А метод генерирует значение довольно больше, 21135. Поставил вручнуе значение 100 - сразу заработало, блок сгенерировался и принялся.
От чего зависит значение этого метода? Как сделать чтобы он возвращал правильное значение?