The introduction of python instancing for ID data in 2.80 completely broke the 'smart & efficient' hack of using a same py object as key for initial quick check, since rebuilding the RNAPointer in the BPy_StructRNA would actually affect the py instance of the first ID used to generate that py object... TL;DR: No need for this complex and unclear optimization anymore, since we do not actually rebuild a whole py object anymore every time we call `pyrna_id_CreatePyObject()` from a same ID pointer.