Those are all pretty good advice on how to do what you are asking. What I would add to that is to think about the maintenance involved. The goal is to centralize the use/maintenance of the blocks make sure your work-flow does not end up requiring more maintenance than you were trying to avoid:
A couple of tips to think about:
-Will you be changing colors or object layers in the blocks? If so you will need to be aware of how visretain settings will affect what you are trying to do. If not, then visretain set to 0 or 1 will work. Adding layers and changing colors can add maintenance in top-level drawing using xrefs. It's good practice to have all colors and layers set in xref files before you start using them as xrefs.
-Who else will be using this file set? Not having the insertion points at 0,0 can be troublesome if you are not familiar with the package.
-Perhaps separating the blocks into subject matter file groups would help you avoid the need for XClip. Keeping the files lean and clean is a plus.
-Typically I avoid annotative text in XRefs as I do not always know the viewport scale they will be used at, as such they e objects will not appear through the viewport even though they are present in modelspace. having to deal with this inside an XRef adds unwanted steps (IMO).
-The newer version of the Insert Block tool pallet makes pretty quick work of redefining blocks. This may be something to explore if you decide the XRef thing is not what you really want. The insert dialog allows you to set a predefined drawing to always have in the pallet so you can quickly go there and grab blocks and drag / redefine in open drawings.
Best Regards
-Tim C.