Some servo motors have a standby mode, when there is no signal received. A Servo.detach() is all that is needed for those. I think the SG90 is not such a servo motor, but could you try it. Perhaps you could also try to make the signal output LOW and check if it is still buzzing.
Perhaps a Servo.attach() after a detach() will set it back to the middle position. I'm not sure about that.
Could you solve the problem of the buzzing ? Perhaps a 1000uF to the power of the servo, or better grounding ?
How do you power the servo motor ? with the Arduino 5V pin ? Do you know the peak current of the servo motor ? I read that the current peak of the SG90 can be 500mA. That is more than the Arduino can supply.
The SG90 can have different brands, what is the brand ?
If you use a NPN or N-channel mosfet to the ground, the servo is no longer connected to ground and the signal might get wrong somehow. I would use a PNP or P-channel mosfet in the 5V power to the servo motor, that can handle 5V and 1 or 2A. And a protection resistor is needed from the Arduino signal pin to the servo, perhaps 1k or so.
What did you pay for the SG90 ? It is 1.60 dollars on Ebay or 1.19 dollars on Aliexpress (and that is inclusive shipping). I think you better buy a good quality servo motor, instead of spending money and a lot of time to make the cheapest servo motor on this planet work better.