We need this odd-looking code because if a seed exists we need to ensure
that only one interpolator is generated per LoggedDiscreteCDF, but if no
seed exists then the potentially lengthy process of making an
interpolator can happen outside the lock. makeUpRuntimeCore only locks
around the two hash map accesses.