I've managed to get this working quite well by doing the following:
Create an Azure Load Balancer
Define two front end IP configurations, one for each instance.
Define one backend pool by selecting both of the two cluster nodes.
Define health probes for each instance, using high ports
Define two load balancing rules, one for each instance using the hard coded SQL server ports (TCP/1433 and TCP/1434)
As I can't define the same port more than once using the same backend pool, regardless of which front end IP I'm using, I can't set up rules for UDP/1434 towards both SQL servers.
On the cluster I ran the following PowerShell cmdlets:
$ClusterNetworkName = "Cluster Network"
$IPResourceName = "SQL IP Address 1 (<InstanceName>)"
$ILBIP = "10.0.4.202" #ALB Front end IP address
[int]$ProbePort = 59991
Get-ClusterResource $IPResourceName | Set-ClusterParameter -Multiple @{"Address"="$ILBIP";"ProbePort"=$ProbePort;"SubnetMask"="255.255.255.255";"Network"="$ClusterNetworkName";"EnableDhcp"=0}
Get-ClusterResource "<ListenerName>" | Set-ClusterParameter RegisterAllProvidersIP 0
Get-ClusterResource "<ListenerName>" | Set-ClusterParameter HostRecordTTL 300
This was done for both instances. Failover works as expected.