With a lot of windows open the annoying part of =org-capture= is =switch-to-buffer-other-window= for me. My approach is using the current window for the capture buffer:
#+BEGIN_SRC elisp
(defadvice org-capture (around bp/org-capture--around)
(flet ((switch-to-buffer-other-window (buf) (switch-to-buffer buf)))
ad-do-it))
(ad-activate 'org-capture)
#+END_SRC
