The commercial GeoIP plugin which I created provides this functionality. When a client gets blocked by one of the GeoIP/CIDR/IP Netmask rules, you define the behaviour to rewrite to a VOD file for example.
You can set a different stream name for a player by using the
IMediaStreamNameAliasProvider2.resolvePlayAlias methods. If you decide you want the player to play an alternative stream then you set the name here. If you decide to reject playback then you can return null here. You wouldn't be able to send a vod stream to a player if it requested a live stream but you could have a vod file running in a loop on a server side published stream and send that to the player.