Mostly for what it's worth, I don't think there are a lot of good reasons left these days for ddraw accessing the wined3d front buffer. In particular, in ddraw_surface_update_frontbuffer() we should be able to just blit to the back buffer and then call wined3d_swapchain_present() with a 0 swap interval. There are of course some optimisations to wined3d's present path we'd like to make regardless.
We may want to consider building recreate_texture() from patch 3/7 on top of a helper to create a texture from a wined3d_swapchain_desc, shared with wined3d_swapchain_init().