I can’t solve all of this, but I can definitely point you in the right direction.
You are running dnsmasq on the host bound to all network interfaces so when lxd tries to start up its own dnsmasq on lxdbr0 to hand out addresses to containers that fails. That was why stopping dnsmasq on your machine let the network come up.
You don’t need to go that far though I think what you probably want to do is in /etc/dnsmasq.conf make sure you have the following uncommented:
interface=lo
interface=eth0
bind-interfaces
The comments around that should make sense.
Then, to make sure you can use dns to e.g. ping mycontainer.lxd from your host then you should create a file /etc/dnsmasq.d/lxd with the following single line:
server=/lxd/10.123.65.1
That tells dnsmasq to forward any name lookups for *.lxd to your lxdbr0 address. Note that you may get a different address if you reinstall lxd.
Then - if restarting containers doesn’t grant them an IP address check your firewall.
Now - as far as routing traffic goes, if you do have a firewall make sure it is set up to route traffic through lxdbr0. For ufw that might be something like this:
ufw allow in on lxdbr0
ufw route allow in on lxdbr0
ufw route allow out on lxdbr0
As far as your problems with snap and uninstalling go, I’m afraid I can’t help much. I’ve found snap (on non-ubuntu distros anyway) to be temperamental and I find some of its core design decisions questionable but if you want to run lxd you don’t really have any choice.