We've recently encountered difficulties using a virtual function as a slave in a bond where the virtual function's MAC address differs from the bond's.
I've opened an RFE[1] suggesting MAC spoofing to be enabled/allowed in virtual functions.
[1]
https://bugzilla.redhat.com/show_bug.cgi?id=1413596