My manual process is simple (now I've got it working - it caused me headaches at first!) - make CH_PD high, GPIO15 low, GPIO0 low, leave GPIO2 floating (high) and apply power. And since I've been using the limpkin dev board - this has a handy button to do the reset whilst holding GPIO0 low briefly - I just press the button and issue a esptool.py write_flash command. After the flash has completed I let GPIO0 float again and either toggle CH_PD or just break and re-apply power.
I would try to get the manual way working before getting the CTS and DTR lines working - one less thing to debug.
Also have you got just the one module? I've been fairly lucky with mine but at this price you can't expect 100% perfect quality control - maybe you have a bad module?
Good luck and do post back with your results - it helps others especially newbies who might not have ever worked with micro-controllers before.