It's a good plan.
I had my own display context that upon calling the refresh() function for it, it would switch to 68K, bitmaps unlocked, switched, all IDCMP messages since the last frame gathered into a local buffer, display refreshed, new bitmap locked and then back to PPC.
The PPC would then call native callbacks for the buffered input events.
End result, 1 full context switch but you get all the OS work done and you get to handle your input natively on the PPC in time for the next frame. Not a bad result.
-edit-
Good heavens, did we just agree on a coding issue? :-D