Optimize subsequent RepositoryInterface::find($id) calls

Because we use the Identity Mapper pattern, we can optimize this
and just return the existing object without hitting the database again.
Hitting the database is not going to give us new data,
as we will not hydrate a new object if one already exists.

The behavior would differ now when doing a find() for an object,
which previously existed but got deleted by some means
other than RepositoryInterface::delete($entity).
The old code would've thrown a NotFound exception in that case.
The new one returns the object that it still believes to exist.