If you're using non-fungible tokens your best bet is to issue each one as a separate asset, since this is what they effectively are. You can combine them together at the user interface level if you don't want to show them as separate assets.
Alternatively, if there is an issue of scaling to millions of NFTs, you could use inline metadata (in MultiChain 2.0) to track asset identities, and use a transaction filter to ensure these identities are preserved from input to output. In this case you will need to build transactions manually using APIs like listunspent + createrawtransaction in order to ensure the right metadata is written in outputs for the tx inputs.