Problem: Outbound transports do not enforce the protocol's 12-byte message type and 4 MB payload limits.
A longer type can abort V1 or overwrite V2's encoding buffer, while an oversized payload can be sent only to make the receiving peer disconnect.
Normal production code sends fixed P2P message types only, while the testing-only sendmsgtopeer RPC can reach the oversized payload case.
Fix: Apply both limits before messages are queued or encoded, leave rejected messages unchanged, and return an error from sendmsgtopeer.
This addresses the fuzz failure discussed in #35880 in the production send path instead of filtering the input in the harness.