Are you comfortable with ActiveX through Lisp? If so, then I think you can code up what you want. I don't use dynamic blocks, so I'm not the best to help, but I can give you a start. The problem with dynamic blocks is once you change a property they become an anonymous block, so you have to gather all blocks within the drawing, and then check their 'EffectiveName' property.
(if (ssget '((0 . "INSERT")))
(vlax-for obj (vla-get-ActiveSelectionSet (vla-get-ActiveDocument (vlax-get-Acad-Object)))
(if (= (vla-get-EffectiveName obj) "BlockNameHere")
(setq BlkList (cons obj BlkList))
)
)
)
Then you can check the dynamic properties of the blocks within the list. Hope that helps.