I disagree with your assessment of the situation. I think you have a 10000-foot vision of migration that's very different from practice. I don't think this proposal is actively harmful to a large extent, but it is completely useless.
reset votes on migrated posts. This is do-able, but frankly it feels like treating a symptom
Migrating votes with posts is in itself a problem, not a symptom. It's also only loosely correllated with the age of the question, in that older posts have had more time to accrete votes.
penalizes folks
The current system rewards upvoted posts on migrated questions more than non-migrated questions, because they get the votes from the original site on the original site, the votes from the original site on the target site, and the votes from the target site on the target site.
who answer what are by all appearances valid, on-topic questions.
If the question was on-topic it wouldn't be migrated. If your problem is that on-topic questions are migrated, tell off the people who are migrating on-topic questions. If your problem is with questions that were once deemed on-topic but are now no longer considered so (e.g. the kind of SO questions that were once moved to Programmers), that's a different matter that should be juged on a case by case basis.
Migration works best as a way to salvage good but off-topic questions and give them new life on a site where they can thrive. But shuffling old, answered, on-topic questions around for the hell of it is a waste of everyone's time.
If there's good content in an old, off-topic question, I'd rather migrate it to a site that wants it than delete it.
Therefore, I think the real solution is much simpler: just disable the migration of old questions.
That sounds like a solution in search of a problem. Nowhere in your proposal do you mention what problem migration of old questions have (that migration of new questions doesn't have).
They're rarely welcomed or heavily improved post-migration, often overtly disliked by folks on the destination site
If the target site doesn't want the question, the question should not be migrated. That is a problem with the current migration rules. Not the age, but who decides.
and can end up causing a rather bad experience for folks who were participating in good faith on the original.
If they didn't get a bright orange bar multicollider notification, they wouldn't even notice. And how is a migration a worse experience than outright deletion anyway?
On the flip side, I don't see a major harm caused by this change: old posts that should have been migrated can just be left to die on the source side, as they would be if there was no SE site where they're on-topic. Hopefully the deletion will wait until after someone's reposted the question on the site where it's on-topic and all worthwhile answers have been reproduced as well. Preservationists are going to complain, but as long as you field these complaints, it's your problem. What I'm more concerned about is that it's yet another rule that moderators will have to explain to users when they flag for a migration of old questions.
I see two major problems with migration today: that the target site doesn't get to decide, and that votes are migrated with the posts. Your proposal doesn't solve either problem. If you're so set against migration, remove the feature altogether.