You might want to consider putting addresses in a related table and then linking it to people records. People with the same address would then be linked to the same address record--that's the only way to ensure that two people at the same address have exactly identical address fields. Otherwise, you get one person with an address of 2825 Main and another has 2825 Main Street...
People::AddressID = Addresses::AddressID
It would then allow you to base your labels layout on the addresses table and a calcuation field like this:
List ( People::FullnameField )
Could be included in the merge text that makes up the address label.
Using your existing table structure, you might be able to create a self join that matches by the address fields:
YourTable::StreetAddress = YourTable 2::StreetAddress AND
YourTable::City = YourTable 2::City AND
YourTable::Zip = YourTable 2::Zip
This would allow you to use List ( YourTable 2::FullNameField ) for your list of names, but you'd need some kind of script to omit duplicate addresses from your found set to keep from printing multiple mailing labels. If your sort on these same fields, a looping script could work through your found set, omitting a record when it's the same address as the previous record.