Documentation of meta and links should be done on a per-event basis. This will result in a fair bit of "boilerplate documentation", but given the per-event versioning of the protocol I think it's the only reasonable approach. Since presumably two separate event types/versions can have separate definitions of these objects, common definition will require dependency management and a considerable risk of inconsistency once these begin to diverge.
Following that, we should use the schemas to validate required items in the links list. We can't forbid additional link types, however, since that would prevent extending the protocol.