@MGO-Norsyn
You did not say: are these dynamic block references of thousand-ish from the same dynamic block definition, or very limited number of the dynamic block definitions (i.e. each dynamic block definition is used for hundreds or thousands references with variations of property values)? I assume this is your case.
I had the same experience of slowness: I worked with a drawing model that has a very long "alignment" type facilities and a quite complicated dynamic block is used as some sort of label with many dynamic properties. By concept from user's point view, it seems great: user only deal with 1 single block. But AutoCAD has to deal with thousands of anonymous block definitions and references every time a block reference is created and one of its property is set.
I have no idea of the details of how AutoCAD creates the anonymous block definitions behind scene. But the rapidly increased slowness when the count of references to the same dynamic block definition increases suggests that whenever a dynamic property value of a block reference changes, AutoCAD may scan ALL anonymous block definitions related to the dynamic block definition to find out if there is an existing anonymous block definition suits the changed property value; if yes, the existing anonymous block definition is used; otherwise, a new one is created. The intention could be that to minimize the number of anonymous block definition being created, thus save a bit of drawing size. However, if the count of the block reference is large, the constant searching/comparing would be excessively costly. Obviously, if too many properties are defined, it only makes thing worse.
Again, it is just my speculation, but seems explaining what I (and you) experienced the slowness. IMO, using excessive number of dynamic block reference from the same dynamic block definition with all different property values would not be a good AutoCAD practice.
You might want to verify if the slowness situation be much better when you insert the block reference without setting their dynamic properties (i.e. keep the default dynamic property values, this way all the block references are the references of the original block definition, no anonymous block definitions are created).