I had a similar problem than yours. I solved it with a python script using pysvn that :
- grab recursively all the externals of my project
- freeze each external, explicitly set the revision in the external property (easier than creating a branch/tag for each external)
- then create the tag or branch