My starter was doing the same thing so I put new contacts in it but it still happened, so what I did was hooked up a relay to the solenoid. The relay is switched on by the original solenoid wire, earthed to the block and positive power straight from the starter motor power wire. This means more power goes to the solenoid coil which pulls it in and makes it connect better. I have never had a problem since.
If you need a diagram of this setup PM me with your email and I will send you a layout