JavaScript (ES6), 82 bytes
Saved 2 bytes thanks to a suggestion by @emanresuA
Expects and returns -1 for Fizz, -2 for Buzz, -3 for FizzBuzz.
f=(a,i=k=0)=>[...b=a.sort().map(_=>-!(++i%3)-2*!(i%5)||i)].sort()+''==a?b:f(a,++k) The underlying algorithm is the same as in my answer to the twin challenge.