One thing you can try is to create container records and use them for a parent/child relationship. You can then create a new container record and add X lines where each line is one of the records you're creating. Set the line field values, commit the line and move on. When done, submit the container. You basically create 1k records for the governance of 1 load and save of a single custom record and you're adding lines which is faster than creating records and moving on. If you're expecting other scripts to run on the records, I am not 100% if it still fires the UEs or not for the created child records.. i believe it does.