The biggest will be hormonal balance but there is only so much you can do sometimes.
Change your towels out more often. Change the sheets and pillow case more frequently. Make sure you're drying off the face before the rest of the body with a towel as it can transfer bacteria from body to face. Shower after a workout, the sweat you produce helps push the oil and bacteria out but it will resettle on other parts of your body. So the sweating is good, but you want to clean relatively soon.
For washes. Use salicylic acid to help clear your pores of dead skin/oil, it's basically a chemical exfoliant. Use benzoyl peroxide to help kill the bacteria. You have to be careful when introducing these to your body as they can over dry you out, so you may have to use only one, use a lower concentration or use less frequently. You can also split the bezoyl and salicylic between 2 different showers; I'd use the salicylic before bed as it will help keep your sheets cleaner longer. You can also use moisturizer, a non-comedogenic one, this will help fight the drying out of the other washes. It also keeps your skin healthy and lubricated which will help the oil "slide out" rather than get stuck. With moisturizer it's best to use after you dried off from a shower. You don't want to your skin to be too wet, but you want to trap the moisture that is in your skin.