You can very nearly do this with totally standard built-in features, most of which actually rely on support from the phone network rather than anything special on your phone. In fact I can't think of a real way to do absolutely everything you're asking without implementing it at the phone network, rather than on the phone.
You can block "Unknown" numbers very easily, but I don't think there's a standard way to play a message saying that the call has been blocked and why. After all your phone would have to answer the call itself in order to play the message, only the phone network can talk to callers without answering the call!
To block unknown callers: on your phone, go into Settings, then into Call Settings, select All Calls, select Auto reject, tick the box to Enable auto reject, select Auto reject list and tick Unknown.
Playing a message to callers after the phone hasn't been answered for a specific time is exactly what normal Voicemail does. Most voicemail kicks in after a small number of rings, but if you want to extend that most networks will allow you to set a longer time before the vooicemail divert happens, but you will probably need to call your network to arrange this. I have had to set this up for phones on two different networks in the past, for one I had to type a complicated *# dialler code into the phone to request the longer delay, on the other the phone company's helpline could arrange this over the phone.