Ok, here is a short how-to:
You can add your first subnet address to the tunnel endpoint with the same command you already used
or (better) this one:
netsh interface ipv6 add address "your tunnel interface name" 2001:470:1f15:af::1
You can get "your tunnel interface name" with this, it will be in the Name column:
netsh int ipv6 show interface
Now you need to change the source routing policy for your administrative tunnel end point address.
The command for that is netsh int ipv6 set|add prefixpolicy <address>/length <precedence> <label>
First, learn what the parameters are:
netsh int ipv6 set prefixpolicy help
netsh int ipv6 add prefixpolicy help
and learn what your table looks like to begin with:
netsh int ipv6 show prefixpolicy
You should save that output as a reference.
The command to change the tunnel address policy is:
netsh int ipv6 add prefixpolicy 2001:470:1f14:af::2/128 5 10
The IP address of course is the client-side tunnel address with its mask length /-appended.
You can change the precedence (5) and label (10) if you wish, but these should work ok.
The important fact is that the label (10) needs to be DIFFERENT than for the rule that matches the destination addresses (i.e. the default route ::/0) for which you want your administrative tunnel end point address hidden. 10 will likely be larger than any of your rules, and should suffice therefore.
Now, I should caution that I haven't actually done this with an HE tunnel on WinXP, I don't have an extra one to play with, but this method of modifying the policy table has worked on FreeBSD and I have tested the principle on WinXP with routed addresses. This also works on Win Vista where I used a go6.net tunnel. On Vista, the command syntax has slightly changed, for example, "show prefixpolicy" and others are using the plural form (policies).
Another annoyance can be that the policy table sometimes gets wiped out totally with the first "set" command (particularly with Vista). You have to re-enter the whole table in that case.
Here is the standard table and you can cut/paste it right from here.
netsh int ipv6 add prefixpolicy ::1/128 50 0
netsh int ipv6 add prefixpolicy ::/0 40 1
netsh int ipv6 add prefixpolicy 2002::/16 30 2
netsh int ipv6 add prefixpolicy ::/96 20 3
netsh int ipv6 add prefixpolicy ::ffff:0:0/96 10 4
netsh int ipv6 add prefixpolicy 2001::/32 5 5
Another point comes to mind, at least on Vista, I had to assign the subnet address to the tunnel endpoint, whereas I rather have it on the physical interface and leave the tunnel alone for transit. But last time I tried it, it didn't work and would just block IPv6 and use IPv4 instead.
Nota bene: The last rule (precedence 10) specifies how to treat IPv4 traffic, as it is the compatible IPv6 address. If you give it higher precedence over the rule 40, the system will always prefer IPv4 over 6.
Addendum: The command
netsh int ipv6 reset
will also reset the policy table to its default state.