Just a small note which could be change for next homework to bring a bit more consistency and avoid issues.
The signature to handle messages is the following :
Whereas the signature for a callback is:
type NewMessageCallback func(origin string, message GossipPacket)
It could be great to have always the same order for the parameters so "origin, message" or "message, origin" but not both changed for the next homework.