Experimente NameVirtualHost * em vez de *:80
A razão para o comportamento que você descreveu, solicitando joshhornby.co.uk abre a primeira, é que NameVirtualHost *:80 corresponderá à primeira definição VirtualHost *:80 .
Se você usar apenas NameVirtualHost * , estará dizendo ao apache para pesquisar todas as definições de VirtualHost para encontrar a melhor correspondência, em vez da primeira correspondência positiva.