An often overlooked cause of these kinds of problems is excessive resistance.Loose, corroded or damaged battery cables or ground straps can choke off the normal flow of current. Testing the battery is always a good idea but also the connection may read good because all you're measuring is continuity -- not the ability to handle a high amp current load. The connection may pass a small current, but when a heavy load is applied there may not be enough contact to pass the extra current.
you are going to have to perform a voltage drop test has another step before sinking money into a starter. A voltage drop test is the only effective way to find excessive resistance in high amp circuits and it not hard to do ( but you need a DVM)
1st thing even though the battery is new means nothing, check the state of teh battery. To get the starter spinning at normal speed the battery needs to be at 75% state fo charge (12.4 volts or higher idle) anything lower battery is no good for starting.
The test..
important make sure to disable the engine so it will not start just crank ie pull the fuel pump relay, etc) and only crank for short duration
set the DVM to the 20 volt scale and connect the + postive lead to the + postive side of the battery and the negative lead to the negative side, crank the motor and record the reading you see on the meter.
Next, connect your meter positive + lead to the battery terminal stud on the starter, and the meter negative lead to the starter housing. crank the motor and record the reading from the meter. Compare the two voltage readings. If both are the same, there are no excessive voltage drops on the positive feed side.If available voltage at the starter is not within one (1) volt of battery voltage, there is excessive voltage drop in the circuit.
next is testing for voltage drop on the + postive side of teh starter circuit..
Set DVM on 2 volt scale.Connect meter positive + lead to positive + battery post, and the meter negative lead to the battery terminal stud on the starter. While cranking the engine, record the voltage reading on the DVM.The maximum allowable voltage drop including the solenoid in the starter circuit should be 0.6 volts or less.If you find more than a 0.6 volt drop in the starter circuit, you can isolate the bad connection by using the following voltage drop tests.
Check the positive battery post and cable connection by measuring the voltage drop between the two while cranking the engine. Connect the meter positive lead to the battery post and the meter negative lead to the cable clamp. A good post/cable connection should have zero voltage drop.
Check the positive battery cable by measuring the voltage drop end to end while cranking the engine. Connect the meter positive lead to the clamp on the positive battery cable, and the meter negative lead to the end of the cable at the starter. Crank the engine and note the voltage reading. A good cable should have a voltage drop of 0.2 volts or less.
\
To check the starter solenoid or relay connections, connect the meter positive lead to positive battery terminal on the solenoid or relay, and the meter negative lead to the starter motor terminal. Crank the engine and note the reading. A good connection should have a voltage drop of 0.2 volts or less.
Next, you need to check the negative side of the starter circuit....
To check the entire circuit, connect the meter positive lead to a clean spot on the starter motor case and the meter negative lead to the negative battery post. Crank the engine and note the reading. The voltage drop on the negative side should be 0.3 volts or less.
If the voltage drop is too high, set your DVM to the 2 volt scale and start checking each connection on the negative side to find the bad connection or cable. Use the DVM leads to check across each connection while cranking the engine as before.
Check the negative battery post/ground cable connection (should be zero voltage drop).
Check the negative ground cable from the battery to the engine (should be 0.2 volts or less).
Check between the negative battery post and starter housing (should be 0.3 volts or less).
Check between the engine block and starter housing (should be 0.10 volts or less).
hope this helps