Cool, I think I've now fixed the second issue (preserving the position in proced buffers which are not displayed in any window) using your suggestion of setting switch-to-buffer-preserve-window-point locally to nil in proced buffers. I've attached a new patch, the same as the previous one but with one line change for the above.