I haven't found a good way to obtain the category/categories for a content pice so far. The closest that takes you there is indeed tracing along the ancestors and checking the node type for each of the ancestor: https://community.lithium.com/t5/Developers-Discussion/Get-ID-of-current-category/m-p/125151
Which does not work too well in the email template Velocity environment :(
${notification.message}
might return a message context object like documented in https://freemarker-docs-portal.lithium.com/refer/contextObjects#message but even that won't bring you far in obtaining the category.
Maybe you can work around by hiding the category in some short / long description field of the board (depending on whether you not surface this description somewhere in your community UI)?