Short granule tags as poison cause a UaF to read the referenced
memory to retrieve the tag, and means we do not detect the UaF
if the last granule's tag is still around.
This only increases the change of not catching a UaF from
0.39 % (1 / 256) to 0.42 % (1 / (256 - 17)).
I think it would be cleaner and faster to loop until GenerateRandomTag returns something >=kShadowAlignment - that would be just 1 unlikely branch compared to all the stuff GenerateRandomTag does on each call.
Or even pass a minimum tag value as an argument - there is a loop like that inside GenerateRandomTag already.