Using `DeleteCases` and `Union`:

    SetDifference[sets : {__ ? VectorQ}, opts___] := Module[{sdiff},
       	sdiff = 
        DeleteCases[First @ sets, 
         Apply[Alternatives, Union @@ Rest[sets]]];
       	Piecewise @ {
         		{sdiff, SameQ[opts, Null]},
         		{Union @ sdiff, SameQ[opts, "SortAndDistinct"]}
         	}
       ];

       l1 = {b, e, d, a, b, c, d}; l2 = {b, c}; l3 = {a, f};

       SetDifference[{l1, l2, l3}]

       (*{e, d, d}*)

       SetDifference[{l1, l2, l3}, "SortAndDistinct"]

       (*{d, e}*)