NTemacs has a patch now that caches stats so direds are somewhat
faster. It was in support of dired, not startup, so I don't know if it
applies to your particular problem.
I don't know the technical details, but there was a long conversation
about it on the ntemacs mailing list a couple of months ago. You might
take a look.
A dired over the network is very very bad. I find the following
useful, especially combined with drag-and-drop.
;; ----------------------------------------------------------------
;; add "explore" command to pop up the Windows explorer.
(defvar explorer-program-name
  (let ((winder (getenv "windir")))
    (if winder
	(expand-file-name "explorer.exe" winder)
	"explorer.exe"))
  "The name of the program that's executed to Explore a directory.")
(defvar explorer-options "" ;;"/e,/idlist,"
  "*Options to explorer.exe for \\[dired-explore]
Other possible values: \"/e,/idlist,\" or \"/e,/root,\".
Note the trailing comma.")
(defun explore (file)
  "Run the Windows Explorer on the given directory."
  (interactive "DExplore Directory: ")
  (let ((win32-start-process-show-window t) ;; v19
	(w32-start-process-show-window t) ;; v20
	(directory-sep-char ?\\)
        (win32-quote-process-args nil)
        (w32-quote-process-args nil)
	)
    (let* ((efile (expand-file-name file)))
      (setq file (file-name-as-directory efile))
      (start-process "explorer-process"
		     nil
		     explorer-program-name
		     (concat explorer-options
			     efile)))))
(defun dired-explore ()
  "In dired, run the Windows Explorer on the directory named at point."
  (interactive)
  (explore (dired-get-filename)))
(define-key dired-mode-map "E" 'dired-explore)
(define-key dired-mode-map [menu-bar operate dired-explore]
  '("Explore (directory)" . dired-explore))