Check for a duplicate object immediately

This ought to make catalog restoration a little bit quicker by not going through the pain of UTI-fying our dictionaries if the object is already known.
Also remove `[at]synchronize`: we're in the process of initializing a new object, I don't think there a chance that anyone else happens to know we're doing that (unless some other place jumps through a dangling pointer :-S).
Make the icon & child cache a little more thread-resilient