prevent overwriting peers.dat if we have 0 addresses

- fixes #4669
Now you use addrman.size()==0 implicitly to determine whether to write the list at exit. It works, but could lead to strange corner case if we actually need to write an empty list for some reason in the future.

It would lead to more understandable code to explicitly keep track of whether we reached the stage of initialization where addrman was initialized.

A more general solution would be to keep track (in net.cpp) whether StartNode was called. If not, don't do any cleanup in StopNode (which includes the call to DumpAddresses that is the culprit here).