The annoying thing about temporary branch names like "bisect" and "seek" is that: a) They clutter up the nae space available to the repository user. Users have to know that those are reserved names. b) If a repository is cloned while they're in use, they might get into a "remotes" file, with even more confusing results.
This is somewhat heretical, but how about making a truly unnamed branch by having .git/HEAD *not* be a symlink, but rather hold a commit ID directly? It's already well established that files in the .git directory directly are strictly local to this working directory, so it seems a much better home for such temporary state.
Admittedly, this requires more invasive edits (particularly adding a third legitimate case to validate_symref()), but it seems to make more sense. And be ultimately simpler than workarounds for the above problems.
Just loosen the rules from ".git/HEAD must be a symlink" to ".git/HEAD must be a symlink before you can check in".
Yes, I know it's radical. At least I'm not questioning the power and efficacy of indulgences. :-)