I don't know how ZM does it, but in ZR the overlay is refreshed every second. There's a cvar to control this refresh rate; zr_overlays_update_time.
Overlays disappear after some time, so we need to refresh it. Experiment and use as high value as possible to see if this is causing your low fps (highly doubt it with a rate at once per second).