Ah! I didn't spot the subtle naming distinction between '5V' and '+5V'.

Ignore my first sentence. Also, consider renaming the USB '5V' as '5V_USB' or '5V_Vbus' to avoid future confusion.

The problem with resetting when connected is more difficult. The Arduino reset circuit capacitively couples a negative transition on RTS to the MCU reset pin so AVRDUDE can reset it, with the capacitor preventing a a sustained low level holding it in reset. However, when RTS goes back high, the capacitor is now charged to 5V so briefly drives the reset pin to 10V, discharging to 5V via the reset pullup resistor. This is very close to the 12V HV programming voltage of an AVR so it may effectively reset it again by briefly entering HV programming mode. Also, what happens to RTS while the USB plug is being inserted or removed? Unless it transitions cleanly between hi-z and logic high, a reset is almost certain.
To avoid this behaviour is quite difficult - the easiest option is a manual switch to connect RTS and enable programming. If you want to automate it, you need to drive reset from an open drain buffer fed by a non-retriggerable monostable fed by RTS to limit the reset pulse duration, gated with a power good signal form a PSU supervisor IC monitoring USB Vbus to provide a power on delay before enabling RTS reset, and disabling it immediately on power off.
Depending on the terminal or comms software used on the host, opening the USB comm port without briefly pulsing RTS low can be even more problematic. . . . .