First of all you want to use Timestamps as the primary key in your table, and then you want to run logic and conversions against it. I can't help thinking "no, no, please no".
Firstly, Timestamps (and other date/time types) are more complicated than regular numbers. You mention this in your own posts, but I bring it up because this difference can have a direct effect on your table if you key it on a Timestamp. Based on anecdotal evidence only, I believe it cause you real problems in the future.
The second problem, which you also mention, is that the conversions can cause collisions, which is about as bad a problem as you can get with primary keys.
I recommend using a regular number as the primary key, and then working out what 'views' you need on the Timestamp and possibly denormalising this field. You can store the 'milliseconds' as a long, but consider separately storing the month, day, day of week, week of year etc as denormalised (figured) data to reduce the effort required for the database to maintain consistent data.
You should also index the heavily used fields.