The signature of keymap-substitute displayed in minibuffer and *Help* is

 (keymap-substitute OLDDEF NEWDEF KEYMAP &optional OLDMAP)

 The correct version is

 (keymap-substitute KEYMAP OLDDEF NEWDEF &optional OLDMAP)