I was missing a __stdcall prefix in the function declarations.
pd3dDev->BeginScene and similar functions seem to be reset internally at various occasions (where does the old/ initial pointer come from? QueryInterface does not seem to get called). You can ""hook"" them in lite-C if you replace the function pointer each frame but that's a recipe for disaster, and even then I don't think it will go anywhere.
Apparently, after all, you need to create the device with D3DCREATE_MULTITHREADED though, which is out of reach.