I was going to just let `char` handle the knowledge about valid/invalid codepoints as much as possible: assuming I understand this correctly, only 0.1% of the codepoints are invalid, so the loop will only get triggered every 1000 runs.

Generating random codepoints (uniformly from the whole code-point space) is pretty weird in any case; I was um-ing and ah-ing about adding this.