Maybe each thread could have a mapping storing the number of references held (in that thread) for each object? This way only the atomic refcount has to be in the object header.
Also I don’t think there would be an owning thread at all with this idea, so no ID needed.