The message writing logic is duplicated in the seeder. Using the same code as the node
makes it easier to test, maintain, and add new message types for the seeder to support
(ie. header messages so that seeders can apply checkpoints).
Depends on D6355 and D8622