Everything else can be done very easily(You can see the outcome of this in the pokémon sovereign of the skies thread or on the youtube video: https://www.youtube.com/watch?v=IcYepxEgAHA
I may also give you the code sample for this if you want just ask me via PM it's for the german emerald version though (BPED) and you need to figure out the needed branches and routines yourself for your version(also the dedicated offsets)
What would be still really nice would be a way to implement this in a user friendly way. An item would be fine but how would it look like? Like a whip? Guess that would be rather harsh. Also the user can't decide which pokémon to ride this way. Not the best option I suppose...
I think a saddle would work. However, your method is much more difficult than mine. The structure of OWs involves 4 different tables, and each sprite, just for headers and pointers, nevermind the images themselves, would need at least 30 bytes, per image. For my idea, we would just read directly from an image table with 12 bytes max (pokemon number (2bytes), img pointer (4 bytes), palette pointer (4 bytes)). And we wouldn't have to deal with all of the extra data that OWs have.
Also, I'm sad to say, that on Emerald, there is no hack to allow more than 256 OWs. Right now, emerald is already at 240. This would limit you to an extreme amount unless you port over JPAN's massive OW hack.
On another note, we could also just hack the OW loader, so that when it is loading the bike, we simply push it to a different table, but using all of the same parameters as the bike. Then we wouldn't need to worry about expanding OWs.
If Jambo is interested, he could code it into a move himself, since he knows how to, but I don't know if this would be his thing.
If you do want to continue with the bike OW thing, go to RHO. I just finished code to force an immediate OW switch that doesn't require a reload of the screen or warping.