The first two issues both sound like you have misconfigured DNS and the first resolver in your list is invalid (and has to time out). The same misconfiguration under OSX would be likely to create the same issues.
Thank you for solving the first issue! I switched DNS from automatic to manual. Now I do have to adjust this every time I switch networks so perhaps I should write a script that does this automatically.
This never works for me... can't ever get it to stick, tried all kinds of ways to mod with nmcli or systemctl restart/reload network manager. Debating on just doing a cron job to rewrite resolv.conf.
I'm not an ubuntu user (debian testing here). I remember that various systemd-thingies were actually tweaking some network settings behind NetworkManager's back.
Getting NetworkManager to work properly was a matter of disabling all that systemd stuff and then setting it up using config files and nmcli (the gnome GUI just broke everything too easily).
My impression after all that was that NetworkManager is a very capable piece of software littered with bad interfaces and impenetrable documentation. You will emerge victorious if you fight those hard enough. In contrast, trying to setup the system using the various systemd-thingies got me to "xxx is planned but not working now" every time.
Btw, I do have a weird complicated network configuration because I'm switching between ethernet and wifi, and have multiple bridged and/or routed vms/containers (with all of kvm, lxc, and virtualbox).
In the server environment at least, Ubuntu 18.04 makes use of `systemd-resolve`, running a dns server locally. Have you looked at setting DNS with that?
Why are you manually configuring DNS? If you need it to switch between different networks, it sounds like you should let DHCP do its job instead of overriding it.