Only 8 chars in base16 [abcdef] [0-9] possible chars isn't really that much, not that's likely but I would lengthen the token to play safe.
I also would not trust this entropy since it's based upon microseconds and can be guessed pretty much instantly, it's far from being random:
sha1(uniqid(rand(), true));
uniqid isn't meant for security purposes, it's only useful in PHP to prevent multiple submissions into a database for example. So consider that obfuscation. If you insist, try to use mt_rand(). But try to avoid it at all in generating a relative secure token imho.
I would drop the use of: unset() by all means, it had/has issues and certain PHP versions are still vulnerable, just empty the session by making a new one, but empty, or: session_destroy();
What would be cool if you could randomly generate the input field name:
echo "<input type=\"hidden\" name=\"<?=$random_key;?>\" value=\"".$this->token."\" />";
Which you place in a session as well, this way it's very hard to regex it out when an XSS is available.
/end of critique ;-)