@fohdeesha Thanks for the thorough explanation. Took me a while to get the network configuration working, but I think I've got it all working nicely now from a stock Ubuntu cloud image.
For those interested:
My cloud init:
#cloud-config
hostname: {name}
users:
  - default
ssh_import_id:
  - gh:<username>
package_update: true
package_upgrade: true
packages:
  - xe-guest-utilities
byobu_by_default: system
runcmd:
 - systemctl disable cloud-init
power_state:
  delay: "+1"
  mode: reboot
  message: Rebooting system
  timeout: 5
  condition: True
My network config:
version: 2
ethernets:
  eth0:
    addresses: []
    dhcp-identifier: mac
    dhcp4: true
    nameservers:
      search:
        - my.nameserver.local