There is a path from VCC to "M1" via the 10k resistor. Therefor VCC may not be much higher than the voltage of the Arduino board.
When you use 3.8V power for the motor and a Arduino Uno running at 5V, then I know what to say. When it can be anything, then I don't know anymore.
A Lipo batter is not 3.8V, it is 3.0 ... 4.2V.
A normal transistor can also drive a mosfet gate. When you use a NPN transistor for the first stage, then you don't need the 10k to VCC in the circuit.
Sometimes a mosfet is better (less forward voltage drop, less heat), sometimes a transistor is better, and there are also IGBT transistors for the real stuff.
The 20kHz could warm up the 1N4007. Sorry for the confusion, I forgot that you were using 20kHz. You can put your finger on it, so see if it gets a little warmer. In this case, a Schottky diode also a good choice.