Hello Willem,
using CEF is helpful for getting good forwarding rates with less CPU load.
BGP can be used and you can associate BGP communities to customers that want different treatment.
You need to cooperate with your upstream provider.
Given your AS is 65000 (as example)
you can add a BGP community attribute of
65000:1 for routes that shouldn't be seen outside the local network.
At the same time you will use a BGP community of
65000:2
in order to mark routes that have to be advertised in the international internet.
You will send to the upstream provider routes with BGP community.
The upstream provider will provide a different treatment to the two sets of routes.
It can add a special BGP community to keep the first set of routes local.
What is nice of this approach is that any change can be implemented in your side only without involving each time ISP stuff.
So I agree that BGP is the right tool here.
Hope to help
Giuseppe