A starter motor should be violent when you apply power to it. The snap up to full speed is what throws the bendix (gear) into the fly wheel. It sounds like your is slowly coming up to speed which suggests a voltage drop. If all the terminals especially the negative lead that bolts to the motor are clean and you have replaced most part I suggest you buy a volt meter and trace the fault down. double check the negative to engine mounting spot and make sure that is clean.
To test with a volt meter
at the battery put the red lead on positive and black lead on negative it should be about 12.6v (lower than 12.2 charge the battery, under 11.5 would sound like a dropped cell on a bad battery)
get someone to try cranking the motor and the voltage should drop but stay about 11.5v (its a 40 hp so I wouldn't expect lower than 11v) If it drops lower suspect that the battery is bad under load and needs load testing at a auto parts store.
next leave the black volt meter wire on the negative of the battery and move the red lead to the post on the starter and get someone to crank the motor the reading should be higher than 11v. (lower indicates a bad connection chase it down buy repeating test and moving red lead along the terminals back to the battery)
Now Change the meter leads so the black is on shinny metal at the motor and the red is on the starter post and crank that should also be higher than 11v. If you get a low reading then look at the ground cable connections as the test indicates theres voltage drop in the connections or lead.