At least it explains why NetworkManager is started. To make sure it is the reason for your second address - stop NetworkManager (systemctl stop NetworkManager.service), then again perform ifdown and ifup for your interface. Do you observe second address now? If yes - make sure to verify that NetworkManager is still stopped.
Stopping the network manager and bringing the network card down and back up leaves me with a single (the static) IP address.
I prefer to keep the Teamviewer daemon stopped and only enable it when I need to use Teamviewer for clients, or other reasons.
If you wish to do the same, you could:
systemctl disable teamviewerd.service
Then, when you want to use Teamviewer, you issue:
systemctl start teamviewerd.service
and when done:
systemctl stop teamviewerd.service
I do it also for security reasons, as well as lightening the load when it is not in use.
Good. So this is TeamViewer bug - it must not hardcode NetworkManager dependencies, if it wants to ensure network is up, it should instead use generic network-online.target. You may want to report it to TeamViewer support channel.
In the meantime you can copy teamviewerd.service to /etc/systemd/system and edit to to remove explicit references to NetworkManger.
Thanks for debugging the issue.
I’ll go to Teamviewer for issue resolving.