You’ve almost got this right, but there are a few details still to iron out:
What you need is NOT submeshes. Submeshes in Unity are actually collected triangles that refer to only a subset of vertices in a single Mesh.
For instance you could have triangle list 0 and triangle list 1 which are two separate submeshes of a single mesh object. They might share vertices, they might not, but in either case their numeric indices refer to the single list of vertices in a mesh.
The “single mesh view” of this is what the MeshCollider uses. It is the collected set of all triangles of all submeshes, which is accessible with the .triangles property, NOT the .GetTriangles() method.
See: Unity - Scripting API: Mesh
That is why a MeshCollider accepts a reference to the entire Mesh, not just a submesh within it.
SO… to solve your problem: you need to create multiple Blender Objects, each which when imported by Unity produces a separate mesh, and then you can put a reference to each of those smaller meshes into each of the MeshColliders in your scene/prefab.
Now I have used Blender extensively, but I have almost never exported manually to FBX. Instead I use the built-in import step in Unity which recognizes a .blend file, fires up Blender silently at import time, creates a transient FBX I never need to see, and imports the mesh.
From this I know that a single Blender mesh object will import to a single Unity Mesh at import time. If you use multiple materials on a single Blender mesh, then it will import as a single Unity Mesh with multiple submeshes.
If you have your object as one big thing in Blender3D, you can select parts of it and “Part” it out with the p command in Blender, which will break it off and make a new mesh object. Lather rinse repeat until you have decomposed it all.
When I use this workflow, I still keep ALL the objects in a single Blender file, and then the importer adds an extra “root” object that they all parent up to at import time.