Hi Jay,
Regarding org-refile: I just keep all my current projects in my agenda list. I then set up org-refile-targets to (org-agenda-files :maxlevel . 6). This allows me to quickly refile a subtree to any subtree in any project that I am currently working on. (I use this frequently to organize my reading list, but I also use it to organize todos and reorganize sections in my thesis). I also found that setting org-outline-complete-in-steps to nil and setting org-agenda-use-outline-path to t  makes refile much quicker. I just call org-refile and then begin typing the name of the top-level header that I want. I can then use tab completion to get to any subtree I want. If you have many identical top level headers this may not be an ideal setup, but for me it works well. To make this process faster I use org-speed-commands, and I have even added a key-chord shortcut for org-refile so I do not have to be at the beginning of the headline to refile. One of my projects for today is to organize some free writing I did before I developed my current system, and this setup will make the process much quicker.

Now regarding workflow. I use four files to organize my thesis and other projects. I have a Readinglist.org file that contains all of the sources for research. This is organized by topic, and tagged with various todo states (FIND READ ANNO | NOTES). I keep many of my generic notes on the topics in a few notes headlines at the beginning of each topic. A subtree view of a headline from this file might look something like this:

* Moral Responsibility
** Goals for these Texts
** Important Claims Supported by Multiple Sources
*** Claim 1...
*** Claim 2
...
** Important Quotes . . .
** Other Notes . . .
** Sources
*** READ Kant's Account of Imputation, By Famous Kant Scholar.
. . .

I also use org-bibtex to keep bibtex info in each source subtree, and I can create a current bibtex file whenever I need.

Then I have my Thesis-projects.org file. It has an outline of my thesis and todo states for each section. I set up an org capture template for this file, so if I think of something that I need to do while I am writing I can quickly capture a todo that links to the subtree I am working in. It goes into the inbox for this file and then at the end of the week, I organize these todos into the appropriate subtree with org-refile.

I also have a GTD.org fil. It contains all the projects and todos that are not directly related to the thesis, and I have an org-capture template set up to the inbox of this file. It is not technically part of my writing workflow, but if I remember that I have to pick up groceries after my workday, I allows me to quickly capture a todo, and get back to work with a clear mind.

Finally I have my Thesis.org file. It contains my thesis as well as notes specific to each chapter, and old drafts of chapters that I have not yet completely rewritten. The notes go in a COMMENT subtree at the beginning of each chapter, and the old drafts go in an Old Drafts tree tagged :noexport:. (I find it most useful to have my notes and old drafts right at hand for writing, but  Richard's solution seems reasonable as well.)

When it comes to actual drafting I use indirect buffers to put my notes for the chapter, or an earlier draft on one side of the screen and my current draft on the other. This allows me to keep distractions at a minimum.

Additionally, I tag all todos and readings associated with a particular chapter :chap1:, :chap2:, etc. This allows me to quickly call an agenda that gives me a clear idea of what still needs done for each chapter.

Hope that is helpful.

All Best,
Leonard