"But as the years passed and hardware became faster the relative slowness of dynamic languages became less relevant, while their advantages in programmer productivity became much more relevant."
Let's not discount the fundamental advances to compilation and performance of "dynamic" languages of relatively recent years. Just look at Javascript.
Dynamic languages look much less amenable to optimization at first than static languages, but many new techniques have been discovered, and sometimes there are even optimizations that are only possible to do at runtime if the environment supports it.