Perhaps I was unclear. For example the LidarInfo message would be like so:
Header header
# other data here
And the LidarScan message would be like so:
Header header
time lidar_info_time # refers to the timestamp of the time in the header of the LidarInfo message
# other data here
Then if you get a LidarScan message you just check if you have received a LidarInfo message with a matching timestamp to lidar_info_time, if not you wait until you do.
Nothing ties them to being published at the same rate.