It seems that the commands you have do the jobs they were intended to do. Your are now asking for not only the States, but also the various other settings from within the dynamic block. I would recommend taking what you have and stick with it, then add another function to break out the various other settings in the dynamic blocks. As you know there are a number of other settings to dig into on a dynamic block. If you know that you are looking for a particular setting on a dynamic block then you can create a function to provide that. You have the heart of it all in the code you have from @Lee_Mac and myself.
You can look at the code and see that you can easily develop a new function to examine the distance1 value of your specified block and create something like the following.
(defun getdyn-block-Distance1(dyn-block-object)
(foreach dynprop dyn-block-object
(setq propname (vla-get-propertyname dynprop))
(if (= propname "Distance1")
(setq distvalue (vlax-variant-value (vla-get-Value dynprop)))
)
)
distvalue
)
To create a routine so generic that it will discover every setting and every option on a dynamic block would be a large chunk of code that would result in a very complex data structure that would be equally complex to report on. Considering you want to look at very specific parts of the data, you can write the code to report on that data alone. Hopefully that makes some sense. You have a wealth of help here on the forums to put this together, but I recommend you try putting this together for yourself. The more you dig in the more you will find you can do. Synergy!
On another option, depending on what you want to do with the data. The DATAEXTRACTION command will export and count your summaries for you. Run the DATAEXTRACTION command and just use the Dynamic block properties. It will export a column data set with the unique settings of all your blocks as well as counts. If you don't plan to use the values in code somewhere then data extraction works great to give you the data you want.

Good luck,