It would be quicker to save the points to a list checking for duplicates using the equal function with a fuzz factor. This should also cover any sub mm problems, but you would have to go into a bit more detail as to what that problem is. Convert coords to strings as you write the csv file.
IIRC, the insert command on the command line,infact any command, assumes everything is a string then converts what it needs back into the required integer, real, list etc. This is what makes "command" in a lisp 6-10 times slower. Creating entities with entmake is the fastest, followed closely by the vl add methods, vlax-invoke ??? and vla-add??? in that order. Vla-add is slightly slower as it again has some overheads.
I'm the other side of the world so i'll post a few pointer in the later today.