Alex, I think BRANCHES would do just fine for all branching needs (not TRUNK and TAGS).
Regarding bug fixing that would my suggestion too. Create a sub-branch and fix it there. Later we can decide if the fix warrants a new release of that main version or not. Basically all TAGS branches that have been released are untouchable and if something to be fixed in those, a new sub-branch should be created. Obviously, at some point we'll have to decide when a certain version becomes obsolete and should not receive any further fixes. Rui