Your original thought would be my thought as well. Auto-populate the return address fields from the main fields. What you CAN do is make a button that copies it from the addressee to the return, making it optional to the data entry person. This way they can just manually enter a different return address if it's not the same.
Pulling return address from different records can become messy once you start getting a lot of records into the system. I'd try to keep it as simple as possible, and correctly train the people doing data entry to use the copy button or manually enter the return address.
Thanks for the reply. I'm still thinking that there is a problem with trying to get data from two records in the same table on ONE layout? Generally, the addressee and return address will be from different records so how would you populate the layout with two different records in the same table?
Keeping it simple would mean taking the two-record concept out of the equation.
To do what you suggest, you would have to create a self-join relationship (make an instance/copy of your table, then relate it back to to the main table). Then you would have to create a process where from a record in the first table instance, you "join" a record from the second table instance (which is in fact the same table) to that record. You would then display data from this self-joined table as your return address. It would also technically allow you to join a record to itself.
The joining part can be handled by either a 2-part value list, or by creating a multi-stage script that allows the user to go to another list view and choose the record to "join", processing what you need via scripts and variables. You could also make a button that just joins a record to itself, rather than choosing a join record.