Once in a bind I did a restore that appeared to work.
I think the process I used was:
I restored a MSDB database to another name - "MSDB_OldV" on the target server. Then backed it up. Then restored it again but as MSDB. Then reapplied service pack to have scripts that upgrade MSDB run against the DB.