The way to single out a group of transactions for reporting in Gnucash is via making an account hierarchy for them in your chart of accounts. It may seem "cumbersome" for some use cases, but as Gnucash is "just" a general ledger double-entry system, that's the way to go about it. Under each Fair placeholder account, you can create separate accounts for tracking amount spent for that fair for Show Fees, Hotel Fees, etc. Or, maybe you just want to track expenses per Fair, and don't need to track exactly what each expense was for beyond the Fair it was for, depending on what exactly your reporting needs are.
Essentially, regardless of how sophisticated a program is that you might think of using, for each transaction you'll need to tell it which Fair that transaction is for somehow. You need to give it the data you want to report on in order to get the reports you need. Having it be a subaccount is just the term that Gnucash uses for that kind of grouping, feel free to call it "expense type" or something else if you prefer.
Between being able to copy transactions, it automatically filling in a suggested transaction based on the description as you type it, and being able to create accounts pretty easily based on just typing in a new account name and confirming that you want to make a new one, it might not be as cumbersome as you think.