Have you looked at the filters used in bip157/8? My experience is that these are blazing fast and very accurate (they are the fastest way to do wallet rescans, by far), but they may not work as well for libbitcoin's doublespend detection as they do for finding transactions relevant to a set of output descriptors:
https://github.com/bitcoin/bips/blob/master/bip-0158.mediawiki#specification
"Golomb-Coded Sets"