The first one has a Vf of 0.5V and is already 4 mm x 2.54 mm but may be acceptable with Tja of 88°C/W (44°C rise), the second has Vf of 1.15V and is even larger, so no way.

The MAX40200 ideal diode would match perfectly, but it is not cheap and cannot be found on Aliexpress:
MAX40200.png

Indeed, the bigger ones are too much, but those SS12 diodes may be an option? and they're indeed big, but if we can get some traces between its pads, it might work out? And it's also a cheap & easy to find diode, so ideal for the kind of board we're making.

The FET is basically just acting like a diode ( if it’s connected correctly ), and will handle the expected current.

But the issue is that sometimes the battery is allowed to feed the USB for OTG operation.

So can we connect the gate to a GPIO, and require software control for then using the battery connection ?
Possibly not, as for some time during startup the GPIO may not be the correct value?

Or alternatively, just directly connect VBAT , and users need to use their brains and not connect USB and battery at the same time. perhaps make the track very thin, to act like a fuse, so if the user does this, it burn the track but not the board..

I've had to include the diodes library, but I guess now its in the schematic, I need to move the symbol into the board's custom lib.

I don't normally bother on components like diodes etc which are common, and only use custom libs for parts not available in KiCads default libs, but I can to manually add it to the boards on library, if we are happy with that diode

Edit.

Its a bit of a pain to do, but I've added a 1N5817 to the BluePill lib (in my local copy)

AFAICT, it corresponds to the "D_SMA" footprint in the "Diodes_SMD" footprint library in Kicad. But in general I prefer to use my old trusted footprints rather than using an existing one that I have not checked against the real thing. One thing that makes me suspect problems is the "D_SMA_Handsoldering" variant...