A couple of things:
The problem with your FET/BJT solutions is probably that you are using them in a single-ended configuration. When they are conducting, they provide a nice low impedance drive, but when they are not conducting they go high impedance and you have some external RC time that dominates your response. The brute force way to solve this is to use a low impedance pull-down. The better solution is to use two drive transistors in a push-pull configuration. The same problem can happen with the diode, although my guess is that in the likely configuration you would have a faster RC time here.
It is generally better to avoid using opamps in saturated mode. RF opamps are better behaved in this respect than their audio frequency friends, but even fast opamps can have problems where they are much slower coming out of saturation than their small-signal behavior would suggest. Comparators are designed to operate this way, and will generally perform better.
Finally, since you signal is a sine wave, if your amplitude is predictable the best comparator is a logic gate. Just amplify your signal to ~5 V pk-pk and capacitively couple it to a 74AC series inverter or buffer. You will get a nice, clean, fast square wave out, with very fast edges. If the signal amplitude varies widely, but your opamp 'comparator' works OK to get a +/- 5 V signal, you can attenuate and capacitively couple that signal to a logic gate to clean up the edges and set the voltages.