feat(test): tune test_data helpers

1. get_random_block now returns array of char.  Writing to char
   array with another type does not violate aliasing rules (reading
   does).
2. append_random_text -> get_random_text, just make a new std::string
   and return.  We don't care about nanoseconds lost (shifting to
   insert "x-" at beginning) in unit tests.
test(headers): header heap allocation tests

Also split the random length from get_random_text into a
standalone randint (hope it can be standardized in C++17 :)