You're always saving the same entity object, newTask. So the next loop iteration, you're changing the just saved newTask entity and save it again. This is caused by the fact that after the newTask.Save() call, newTask isn't new anymore.
So after newTask.Save() do:
For Each field As EntityField in newTask.Fields
field.IsChanged=True
Next
newTask.IsNew = True
then, next loop iteration, the entity is brand new and will be saved again as a new entity. Though, if you need this, it's perhaps a good idea to normalize your database a bit.
Also, remove the transaction.Commit() from the for loop. You should commit the transaction AFTER the forloop has been completed, not during the loop. And make sure that if an exception is caught, the forloop is terminated and the exception handler rollsback the transaction, you're not doing that now.