Do not do internal item_realloc() every time

refcount == 2 is "linked and I own it"
code was doing a replace if refcount != 1 (which would mean unlinked and I own
it, in this case. If that code ever actually misfired some weird stuff might
happen).
reorder incr/decr operation to be safer.

looking for explicit refcount numbers before doing anything.

other parts of the code will require refactoring for this to be fully safe.