I agree, it would be nice to have some sort of condition field for each block, or maybe a template to use field. But I think it's possible to do a work-around, although it's not very pretty. You could edit the existing templates and put in conditionals. It looks like each of the block types registers a "blockinfo" parameter to the template which contains a blockid and the title, so you could check those and do different things for different blocks, even if they use the same template. For example, if you had a New Posts block with id 5 that you wanted only to show to members, you could edit the block_newposts template and do something like:
Code:
<vb:if condition="!in_array($blockinfo['blockid'], array(5))" OR $show['member']">
// existing code
</vb:if>
The logic could get a little complicated if you had multiple blocks of that type that you wanted to show in different circumstances, but it could be done. It also has the disadvantage that all the work will always be done to create the block whether or not it's shown, although they are cached so that shouldn't be a major concern.