(1) If you really want a DEDICATED NIC for your system you will need a separate physical NIC for each of those - I doubt this is really what you are looking for. Having said that there are for sure usacases for this, I am i.e. running my pfSense routers with dedicated INTEL GbE NICs (on a separate PCIe). I pass them to my pfSense VMs simply using
incus config device add pfsense igb nic nictype=physical parent=enp1s0f0
or
incus config device add pfsense igb pci address=0000:01:00.0
(2) I know you stated you never liked bridges - but probably the easiest way to give the impression of a network interface directly connected to the router, allowing for DHCP, or static IP, etc. is a bridge. If you are using this for Incus and other stuff you might want to just setup a static bridge on OS level, for debian this would mean your /etc/network/interfaces looks something like this:
auto lo
iface lo inet loopback
auto br0
iface br0 inet static
address 192.168.1.250/24
gateway 192.168.1.1
bridge_ports enp1s0
bridge_stp off
iface enp1s0 inet manual
You do not assign your host IP to the physical interface (enp1s0 in this case), but to the bridge. Same if you would do DHCP for the host, DHCP config/client would be on bridge. Now you have a bridge you can use for your containers/VMs to attach a NIC to, something like:
incus config device add notpfsense eth0 nic nictype=bridged parent=br0
(reboot or systemctl restart networking after changing the file - and you might want to install package bridge-utils now since you have a bridge)
(3) There is probably a way to create a managed bridge on top of your network interface from Incus - but I’m using IncusOS and every interface is a bridge by default there so don’t know / never tried.