Hi Ignacio,
First off, this thread from the start was not intended as a "competition" between PI and ...
As long as PI exists, I necessarily have to be in permanent state of competition. It is my responsibility. For most users this is a hobby, and that's great, but I am the guy who pays the invoices, so there is little room for humor

If I have to work harder to make PI more competitive, rest assured that I'll try to get the job done at any cost.
Let me see if I can understand your description step by step:
1. a master flat is built in the standard way (by bias/dark calibrating a set of flats, and stacking them).
No problem.
2. this master flat is used to calibrate subexposures also in the standard way (by division), ...
No problem.
3. ... the master flat is normalized to a standard scale ...
The scale is---has to be---irrelevant, as long as the same scale is used for the whole data set, and as long as all images are properly normalized, that is, made statistically compatible. Let's assume that this is the case.
4. ... On the GW one can automatically or manualy set pixel weights to zero (ie, for a bad column, cold pixel, etc.). ...
This is just cosmetic corrections and defect maps. Nothing special.
5. Now, these can be manually or automatically modified to reflect things that apply to a single subexposure, like satellite trails (by setting the pixel weights to zero along the trail diagonal on the Weight image associated with the satellite-trialed subexposure), cosmic hits, etc.
Well, we prefer to implement pixel rejection on a more solid statistical basis (and we are working on new pixel rejection methods to improve out toolset in this field). Anyway, this is just rejection, so still nothing special.
6. These Weight images or matirces are kept paired with each corresponding subexposure (two equal size images), and go thru the same geometric transformations as the paired subexposure when it is registered.
Ok, we are now getting closer to the core of the problem. So we have:
F = the master flat.
M = a scaled version of F, with some pixels set to zero to implement cosmetic correction, defect map, "rejection", etc.
I = the calibrated image being considered.
G() = a geometric transformation (essentially the solution to an image registration problem).
then we have:
M' = G(M)
I' = G(I)
7. When stacking, each (x,y) pixel of a registered sub in a stack is weighted with the value found in the corresponding (x,y) "registered" Weight image.
Weighting is scaling, i.e. multiplication, so:
I'' = I' * M' = G(I) * G(M)
where I'' is the registered and weighted image. Assuming that G() is a transformation that maps image coordinates (for example, an affine transformation, a homography, etc.), it is clear that:
G(x) * G(y) = G( x*y )
where '*' represents element-wise scalar multiplication. In simple words: in purely geometric terms and neglecting interpolation and roundoff errors, multiplying two images and transforming the result is equivalent to transforming each image and multiplying the transformed images. So why not apply the weighting operation before registration:
I'' = G( I * M )
Then the problem is that I has been fully calibrated. Among other things, I has been divided by a normalized version of the master flat frame F, which is essentially the same object that we call M above. I still don't see the point of this procedure. I am ready to stand corrected and learn something new here, but either I am overlooking something essential (and probably pretty obvious except for me), or there is "something more" that is not being exposed.