I would prefer the second option (modifying the display-buffer-alist). I don't customize this variable for any of the org-mode buffer but I do for other buffers. That too, I do it indirectly using the shackle package.
Here's my setup that can give your examples and a brief documentation on how to control the windows/frames using shackle: https://github.com/kaushalmodi/.emacs.d/blob/master/setup-files/setup-shackle.el