reading over your post a few times, i was having trouble understanding where the problem is, until it suddenly struck me -- you're thinking of using an autonumber/identity type primary key, right?
you're right, combining person and factory is probably not a good idea
just go with your initial design, however, with a small change --
owner(pk: owner_id)
person(pk/fk: owner_id)
factory(pk/fk: owner_id)
yes, you still must first create the owner row, then use the autonumber/identity key value to create the related row in either person or factory
that's not a problem, that's a feature
but in those tables, it is
not an autonumber/identity