It is something I have experienced, but it is not the visibility states it is the use of the blocks in your drawing, any change to a dynamic block creates an annonymous block. In theory a block is created once and each instance of blocks you place just uses that block definition, which saves time and drawing size. But a dynamic block does have it's own unique characters so one block might use visstate 1 and another visstate 2, or they might have different stretches applied, and AutoCAD needs to keep track of that information as well, so it creates annonymous block names, and it is this that slows a drawing down. I once had a door block with 300 attributes and o couple of dozen lookups for multiple choice entries, the drawing became unworkable after a certain number of blocks where inserted (it could take half an hour to respond), eventually I had to give up on that block. Sometimes simpler is better and I ended up with using multiple blocks.
When you create a block and insert it and then later edit the block, the already inserted blocks won't properly update especially if they contain attributes, you need to run the 'attsync' command and select one of the inserted blocks. And with dynamic blocks sometimes you just have to delete any existing blocks and insert them again with the new version.