How do Bitcoin nodes with dynamic IP addresses maintain connections? Does a node check for their own external IP every so often, then broadcast it?
Bitcoin works over the TCP layer which requires knowing the IP addresses of two ends of the connection. If one IP address changes, the connection will terminate.
In general, to manage disconnects, Bitcoin Core tries to maintain 8 outgoing connections at all times. It stores the IP addresses of every node that it knows about. These nodes can be ones it has connected to previously or ones that other nodes has told it about. When it loses an outgoing connection, it will attempt to make another outgoing connection to replace that connection.
Thus if all connections happened to be dropped due to a dynamic IP address change, all outgoing connections will be replaced by new outgoing connections from the new IP address. Unfortunately incoming connections will not be replaced and the node will have to wait for its new external IP address to be advertised again by its peers.
A node does not directly advertise its external IP address. Instead other nodes learn of its external IP address from hearing about it from other nodes that have connected to that node.