Would this method adequately address all 3 points?
Use the Elite Array (15,14,13,12,10,8) - arrange as desired.
Roll 6d6. A '1' means +1 to Str, a '2' means +1 to Dex, etc. If a roll makes a score go beyond 18, re-roll.
I haven't had a chance to use this yet - my current campaign has...