I can think of something automated and scalable but it takes some custom work.
Setup an external database storing these fields (add or remove fields to spec):
MKTO_LeadId
MKTO_Email
MKTO_FirstName
MKTO_LastName
MKTO_PURLcustomfield
Create a webhook that POSTs the above values to a script which inserts / updates the external database.
Add the webhook to the flow that runs the direct mail piece. (You may also want to create a smart campaign that listens for a change in any of those fields and POSTs to the webook to update the external database)
On the landing page leads are directed to, use a script to parse the subdomain URL, then make an AJAX post to a script that will query the external database using the subdomain value and return the MKTO_LeadId or MKTO_Email. After you have the LeadId or Email, a basic API call can be made to effect the record. (SyncLead then RequestCampaign etc.)
There are probably a few ways to do this with varying languages, but hope this helps. I added the PURLcustomfield option because that might be a better key to query on rather than a name (John Smith might come up many times).
Not the prettiest so hopefully there's a really easy way we're all over looking 😃
It should be noted that all of this would not be necessary if the Marketo API supported querying by custom field or your own unique key rather than the out of the box options.
A 2nd option would be to use the Marketo LeadId in the PURL or have the landing page ask for an "access code" which is really the Marketo LeadId used to identify the contact through some API code.