I have now managed to reference the Virtual Machine running SQL Server with an internal IP 10.0.0.4 by first creating a Virtual Network in the Azure Portal and deploying a new VM to that network.
With the web-role you cannot specify virtual network settings on provisioning through the portal. So to bring the web-role into the network you need to define this in the .cscfg file:
<NetworkConfiguration>
<VirtualNetworkSite name="VirtualNetworkName" />
<AddressAssignments>
<InstanceAddress roleName="MyWebRole">
<Subnets>
<Subnet name="AppSubnet" />
</Subnets>
</InstanceAddress>
</AddressAssignments>
</NetworkConfiguration>
You can now determine the internal IP of the VM SQL Server in the portal and add this to the connection string defined in my application web.config. Publish your application to Azure and providing you've correctly configured the end points and opened the firewall it should work fine.
After running a few performance tests there is a margin gain to be had from using the internal IP over the public DNS. I recommend the guide connecting web roles to a VM as a good reference point.
One other thing. When using a DNS (e.g. myvm.cloudapp.net) in the connection string I could not find a predictable way to know which IP the web role would call from. It was therefore difficult to open port 1433 on the VM to just allow the web role through. With the internal IP I just opened up the whole subnet.