See the vignette: https://vctrs.r-lib.org/articles/s3-vector.html#make-an-atomic-polynomial-vector this would get a bunch of things for free, but perhaps it was already considered and didn't match the use-case
NB: Record only works with vectors with same length, which is not the case for irregular data, check if this constraint is always true and otherwise check if vctrs::new_list_of() could be an option.