One thought, which I don’t have time to fully explain at the moment, would be to use something like Virtual Tiddlers. The brief explanation would be to edit the Story Tiddler Template Cascade, which controls the transclusion of tiddlers into the story river. You could add a filter to the cascade that returns a custom template if the current tiddler is missing, but is found in an aliases field of another tiddler. Your custom template could then simply find that tiddler, set the current tiddler (and story tiddler) to that tiddler, and then transclude the original View Template.
Additionally, in the custom template, you could also set a variable <<aliasTiddler>> to the current tiddler before changing the current tiddler (so that <<aliasTiddler>> contains whatever alias was in the link), and you could then add a tiddler to the view template under the title which would say, redirected from <<aliasTiddler>>.
Then if “spammed” is an alias of “spam”, and you have a link [[spammed]], and you click on this link, then behind the scenes it will actually open the missing tiddler spammed, but your custom template would be applied to make it look exactly as if you had clicked a link to spam (except for the “redirected from” message if you choose to add it).
This solution would not fix the fact that links would display as links to missing tiddlers (because in fact they still would be). This could probably be fixed by adding a custom stylesheet, but I’m not sure if it could be done in a palette-independent way.