Earlier quoted context omitted.
I think that problem could be handled by having the RNG return an error until crng_init=2 and introduce a way to check the state of the kernel RNG. Applications can then check if the kernel is ready to do RNG and if not, handle the delay themselves. But I guess that would break some applications so there might be another way (extra device for early boot randomness? ioctl?)
Why doesn't the device simply block until it has collected sufficient randomness?
The proper fix is to change the boot scripts to not assume that the CRNG will be available directly after boot.