> In theory if you build a string of random chars, then it's not necessarily random as it may have a likelihood of preferring one thing over another

Could you explain this more? The current implementation is just using rejection sampling, and so is perfectly uniform* across the valid at-most-21-bit codepoints (i.e. all of them). There is already a comment to this effect, is this enough?

*Assuming the underlying RNG is.