Effective snail mail return handling
Look for barcodes (and QR codes, though I'm not sure that's avaiable). I believe the best supported area in Civi for this is Events, where it is integrated into ticket printing and event check-in. The code is there for printing barcodes on name tags as well. So then I would check what the token for this is, and check if it is exposed when generating a pdf letter. 

In terms of workflow I believe you either want the code on a mailback envelope or card, and/or on a response part of you package. 

Generally the barcode is used to send a system to a url when scanned. The url can be set up so that it populates the fields in a profile with the values for a particular contact, similar to the email token that generates a url for this purpose. The lifetime that the token is valid from when it is generated can be configured for a period, say 1 week or 3 weeks.

Brainstorming a bit, this could be used to submit a custom activity for the contact. If the barcode is on a returned piece of mail the actvity type could indicate the address is bad (undeliverable, moved, etc.). If the barcode is on the response mechanism then the actvity could indicate the contact sent the mailback indicating, oh, they agree that Trump shouldn't be allowed to become President.

Without custom code, you may need to use a batch update with profile workflow to convert the activity into an update of the address status. Put the field you want to update, eg Do not mail, on a custom profile. Then find contacts with the Mail returns custom activity with Do not mail false, select 50 or 100 of the contacts, choose Batch update with profile as the search action, set the Do not mail field to true on the top line, and click the icon that means copy the value in this field in the first row to all the other rows  then save. Unfortunately you have to repeat this process until all aee updated.

HTH