Not obvious but IsNull() is documented not to work with text fields.
instead do
If([Preferred Vendor(Form)]="",[Item List - Preferred Vendor],[Preferred Vendor(Form)]) // ie test against empty quotes.
But I usually do
If(Trim([Preferred Vendor(Form)])<>"",[Item List - Preferred Vendor],[Preferred Vendor(Form)])
Just in case someone entered spaces in [Preferred Vendor(Form)]