Playing the Name Game
vi, 118 115

Y2PA,&lt;ESC&gt;Ypj~Y2PIbo-b&lt;c-o&gt;wBanana-fana fo-f&lt;c-o&gt;wFee-fi-mo-m&lt;c-o&gt;2$!&lt;ESC&gt;HJJ:%s/\vo-(([bfm])\2([^aeiou]*))?([bfm]?)[^aeiou]*/o-\3\4
ZZ


The code includes 5 control characters, which I've put in brackets. Each only counts as a single character towards the character count.

EDIT: Moving the first join (J) to later and changing the paste-before (P) to a paste-after (p) saved me 1 character. Also, not capturing the o- in the regex saved me 2 more characters.