You would not use a container field for this purpose. You can create s series of calculation fields that use the logic you describe to return the desired address data. You could also put these addresses in a related table and define a relationship that will return the desired address field via the relationship.
Using calculation fields:
If you have two fields named StreetAddress and POBox, your calculation would look like this:
If ( IsEmpty ( POBox ) ; StreetAddress ; POBox )
You can define one such calculation field for each such pair of fields that make up part of your address information.
In a relationship, define a new table, called Addresses, with the following address fields:
AddressType (put either "Street" or "PO" in this field for each record)
Link it to your existing table like this:
Company::CompanyID = Addresses::CompanyID
Define a sort order on the relationship that sorts the records by AddressType in ascending order.
Now you can show both addresses on your company layout in a portal to addresses, but if you just put the address fields from this table directly on a company layout, You will see the PO Box address if one exists and the street address if a PO Box address does not exist.
Thanks so much for your help. The calculation that you provided worked wonderfully.