From a user's perspective, you cannot really prevent that a URL retrieved from an NFC tag is launched in a browser. Upon discovery of such a URL, Android just notifies the application that previously registered its interest into that data type coming from an NFC tag (or shows an activity chooser if multiple applications registered an interest into that data type).
Hence, it's the web browser application that registered its interest (through an intent filter in its AndroidManifest.xml) and you cannot normally1 disable this.
From a programmer's perspective, however, you can prevent that a particular URL is handled by a web browser. Web browsers usually register to be launched upon all "http://" and "https://" URLs. You can override this by registering your application for a more specific URL (i.e. one that includes a host name or even a path, e.g. http://www.example.com/). In that case your application will automatically get precedence over the web browser (no activity chooser will be shown).
Regarding your idea with the BroadcastReceiver: This is currently not possible. NFC discovery events, like the discovery of a URL, are only sent to activities. A broadcast receiver cannot pick up these intents. (See this question on Stackoverflow for a possible workaround.)
1) Note that this is not entirely true as there are some means to disable intent filters programatically under certain conditions.