I know there have been quite a few questions surrounding time, and the use of block.timestamp. However, I still have a few questions design-wise.
At what point exactly is it 'dangerous' to use block.timestamp? I'm building a PoC which would use time units as little as 5 minutes. The average blocktime is 15 seconds in ethereum. I also heard miners can manipulate this timestamp by up to 900(!) seconds. This all seems like it would make developing smart contracts which use small time units unfeasible.
Expanding on the previous question, is there an alternative to this construct? I've heard oracles can be used, but this would incur a gas cost for even simple checks. Is there any other way?
How will future protocol developments impact the current way of working with time? For instance the switch to PoS,Plasma,...
I know the problem time gives, being that smart contracts need to be deterministic and time isn't, but it seems as if the current way of doing this severely limits the amount of things you can actually do with Ethereum smart contracts.