The only place Counters are used is in rendering, for the number of
nodes under a topology, so the overhead of holding a unique data
structure in every Node is unwarranted.
The fixup() method was modifying a copy of its input, so you could get
duplicate keys in the output. Change it to return the new slice.
Thankfully this is rare: in most cases WithLatests() is called with
fields that are not duplicates of existing ones.