<html>
  <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
  </head>
  <body>
    If I understand correctly, your problem is that the layer you are
    buffering has multiple polygons and the buffer around polygon 1
    might intersect polygon2, so if you buffer the layer, then
    difference the layer from the buffer, you lose these overlaps. What
    you want is to difference buffer 1 with polygon 1, buffer 2 with
    polygon 2, etc.<br>
    <br>
    I am not aware of a way to do that from the GUI, but it's only a
    couple of line in PyQgis. You need to loop over the features of the
    buffer layer, differencing the corresponding polygon from the
    original layer. In my quick test, the FID is preserved across the
    two layers. The feature order appears to be the same, but it would
    be prudent to sort the two lists of features first to be sure of the
    same order. Then it's just a matter of looping over the features and
    calling the difference method on the two geometries and adding the
    result to your new layer.<br>
    <br>
    If nobody comes up with a better method or code and you don't know
    how to write Python, I'll probably have a bit of time later today to
    bang this out.<br>
  </body>
</html>