A alternative proposal (which will probably just reveal my lack of understanding about what is or isn't possible with WAL). Provide a way to restart the master so that it rolls back the WAL changes that the slave hasn't seen.
WAL records in PostgreSQL can only be used for physical redo. They can not be used for undo. So what you're suggesting is not possible though I am sure a few other databases do that.