Like jproffitt mentioned, generic relations might be a good solution for you. Alternatively you can use #2 and make it a bit more convenient by creating property and adding some simple logic to it:
class Car(models.Model):
vin = models.CharField(max_length=50, blank=True)
person = models.ForeignKey(Person, blank=True, null=True)
business = models.ForeignKey(Business, blank=True, null=True)
@property
def carowner(self):
return self.person or self.business
@carowner.setter
def carowner(self, obj):
if type(obj) == Person:
self.person = obj
self.business = None
elif type(obj) == Business:
self.business = obj
self.person = None
else:
raise ValueError("obj parameter must be an object of Business or Person class")
However for queries you'll have to use person or business.