a faucet mounted blast jet bottle washer is really handy, if you dont have that then i would either soak them in a bucket, sink or tub with one step, b-brite, pbw or oxy-clean free... (some of these require rinsing, some dont, so follow package directions)
then, sanitize with k-meta or isophor or whatever your sanitizer of choice. i use k-meta on a bottle tgree-mounted ferrari spritzer.
the merits of dishwasher are unclear as most will not be terribly effective in shooting spray up into the inverted neck to completely wash and clear the inside of the bottle with guaranteed reliability.
if you dont have a spritzer, a t-style cork works, out a little k-meta in the bottle and give it a shake so that all interior surfaces are coated, then dump back into pouring container and drain bottle drip dry. you can use the k-meta over again for each bottle if it is at sanitizing strength.
what i do with used bottles is immediately rinse well after use or when i first get them so there is no visual deposits. i save them up until i get a halfdozen or so, then i fill a bucket with a cup of oxy-clean and water and soak the bottles overnight, my morning the labels have either come off on their own or easily slide off with a little prodding from a plastic pot scraper or stainless steel pot scrubber. by now i have also removed the foils. each bottle gets a thorough rinse inside and out and then goes into a cardboard case upside-down for storage. day of bottling i'll soak the bottles in cleaner, then blast with fresh water with the faucet-mounted blaster, then sanitize on the ferrari spritzer and drip-dry on the drying rack. you could certainly do most of these steps a day or two ahead of time and just sanitize at the last minute if you wanted too.