I'm wondering, is it possible to run a metasprite routine during vblank and still have more than half of vblank time left? Have it directly access oam, instead of shadow oam.
I think the VBL area is too precious to muck around with non-GFX transfer related operations. You'd want a nice VRAM transfer queue that takes as little code as possible to minimize code execution related "bandwidth loss".
You got no flat access to the OAM anyway, so you are gonna spend a lot of time poking it through the ports...
Not to mention how much the timing would vary depending on the amount of active objects, so it would be really tough to manage the available time.