Is there a way to block private callers but give them the option to display their number?
There's no option for that on the Anonymous call blocking feature. The message does say that you are not accepting calls from unlisted numbers, so the caller can use a star code on their end to force their number to display.
Callers with Shaw Phone who have their call display set to unlisted can choose to display their information before calling by using the star code *82 to force their number to display, but as far as giving people the option to do it when they call you, there isn't a feature like that currently. The Star Codes are outlined here for reference:
Star Codes / Value Added Features
That star code works on other phone providers too, not just Shaw phones
Thanks @kevinds, that's helpful to know.
Retrieving data ...