This is Solved.
The issue was with eth0 being assigned to the NIC I wanted to use. But I couldn't change it because I had already done the pci-stub.
The solution was to remove the pci-stub from syslinux config, restart, change the NIC to be eth2 in the Network Settings under Interface Rules, restart, add the pci-stub, restart, and then, it worked correctly.
However I then ran into the issue that IOMMU was not enabled, which is required to pass through a PCI device to a VM. I enabled that on my AMD motherboard (not easy to find in the BIOS) rebooted, and finally was able to easily assign the PCI NIC to the VM in the GUI (no need for VM XML editing or virt manager). After that, setting ifconfig promisc in the VM worked like it would on physical hardware. Success!
Easy.