After programmatically creating a token, it does not get overridden
Where are you using the token? Drupal may be caching information at a higher level (like the filtered output of a node, for example) and only calling the token generation code once.