Replying late to this thread, I don't think this is right for V4L2. When it comes to solving the .remove() vs. userspace race, I think the right solution is at the cdev level.
Isn't there even prototype code from Dan Williams?
"[PATCH 1/3] cdev: Finish the cdev api with queued mode support"