So I have a working "solution" now. Maybe hack is a better term.
I changed the STE entity framework template (FTCModel.tt) to exclude the line: previousValue.vendor_account.Remove(Me)
and I changed the addAccountExecute sub code to:
Dim vendorAccount As New vendor_account With {.idVendor = idVendor,
.chrAccName = "New Account Name",
.chrAccNumber = "New #"}
FTC_Context.vendor_account.AddObject(vendorAccount)
FTC_Context.SaveChanges()
which uses the STE context to add the object and not the vendor object like in the first code I provided.
So it is working, but this feels like a hack, like I am doing something wrong still. The fixup method is called from the "vendor" setter property of the vendor_account class and it attempts to remove and then add the vendor_account object to the vendor, which then throws the error I outlined in my first post.
I still don't understand why I got the error in the first place. Maybe it has something to do with the WPF binding a listview directly to the navigation property (of type trackablecollection(of T)).
For now I will use this but I would really appreciate if someone could help me understand this problem a little better.