You are doing them too hard as well. My guess is you take a 2 mile race and use a table to come up with a tempo pace. Wrong. You need a 15k, 10 mile or HM race to figure your tempo pace. If you just don't have one and aren't likely to get one, you have to try different tempo paces until you find one that you are pleasantly tired when you finish.
If you ran 10 min for 3200 last spring, try 6:00 pace for your first one. Make sure you run both 3 x 100 stride and a 400 in 90 seconds before you start. Run the tempo as 6:08 (92 sec 400s), 6:00 (90 sec 400s) and 5:52 (88 sec 400s) on the track. If you are counting the seconds until you are done, run last one in 6:00 not 5:52. If you counted the seconds and bailed to a 6:00, run the next one as 6:16, 6:08, 6:00. If things went ok at 6:08, 6:00, 5:52, next time run 6:08, 6:00, 5:52 and one more 400 at 88 without stopping. You should be able to add one 88 sec 400 every week or two until you are running, 6:08, 6:00, 5:52, 5:52, 5:52.
Stick with adding to the 5:52 pace until your 3200 time improves to 9:52. You don't need to speed up the first two miles or go beyond 20 laps. Once your 3200 improves enough, you can go to 5:48 pace. You can not rush your improvement by running your tempos' faster.
"Don't agree that his hatred stems from doing them too hard. I am pretty judicious about locking in right pace, and they kill me too. By the end of a 20 minute tempo I am counting down the time before it's over."