I have read some articles here and on other websites about the drawbacks of using DNS to implement high availability services. This is mostly due to the fact that configuring DNS to work efficiently across the internet does not lend itself to quick failover. However if I were to run a DNS server inside a virtual network (on Azure for example), could setting a short TTL on local DNS entries provide a sensible way of doing this?
Yes, but bear in mind that you may be introducing a new single point of failure by doing so, so you'll need to design your way around that. Alternatively use some form of load-balancer, that's what many/most people do.
Many DNS servers disregard the TTL, considering it more as a suggestion.
It is not suitable for quick failover, if quick is defined as less than two hours. If your scenario can tolerate running both the old and the new services at the same time it is still a viable option.