relays resolve hostname every time they compute dir fetch schedule; but bridges resolve too seldom
directory_fetches_from_authorities() calls router_pick_published_address() whenever server_mode(options) is true.
This happens during directory_get_from_dirserver(), directory_command_should_use_begindir(), dir_routerdesc_download_failed(), directory_info_has_arrived(), update_consensus_networkstatus_fetch_time(), launch_router_descriptor_downloads(), update_router_descriptor_downloads(), etc.
Sounds like we should refactor things so it writes its guessed address to a variable and just reads that variable, and then have a periodic event (scheduled when we want it, rather than scheduled by accident because we think about doing a directory fetch) that writes an address into the variable.