I have tested dynamic objects before. All you need to know are which attributes are static and which attributes are dynamic. Instead of using the directed GUI Object name, directly invoke the attributes for identification, operation and validation.
Think outside the box. I have yet to find an interface I could not test at all using WinRunner.
The primary disadvantage of this (or any) tool is primarily in the skills of the user. Learning the tool will open up wide vistas of what it can do, there are certain technical limitations. (It will not make coffee, wash the dog or clean the litter box.) But, those limitations are often worked around or mitigated by the use of a companion tool.
Quality is the result of a carefully constructed cultural environment. It has to be the fabric of the organization, not part of the fabric.
WinRunner can be used to automate most everything you can imagine. There is a big difference between what one can automate and what one should automate. There are white-papers and books aplenty from which you can derive this information. Check out the other links at this site.
Most of the shortcomings can be attributed to the human user, as was previously indicated. You asked how to overcome these shortcomings. The answer = get trained!