Spread the beans on a baking sheet and feel for any stones. Rinse the beans well, put them in a large pot, cover by 3 to 4 inches of water, add the salt, onion, and basil stems, and bring to a boil. Reduce the heat to a simmer, cover, and cook until the beans are very tender but not falling apart, 45 minutes to 1-1/2 hours, or longer if necessary. Start checking early because beans cook at different rates; if the water level gets low, add more. When the beans are cooked, let them cool in their liquid for about 15 minutes and then drain. Transfer the beans to a large bowl and keep them warm.
Meanwhile, make the dressing by whisking together the orange zest and juice, the lime zest and juice, the sugar, chipotle, garlic, salt, and pepper until the sugar has dissolved. Toss the dressing with the warm beans, using a rubber spatula to gently fold so the beans get well coated but not smashed. Let the beans sit for a few minutes and then toss a few more times. It may seem like too much liquid at first, but the beans will gradually absorb it all. Fold in the mango, jicama, onion, basil, olive oil, and serve.
You can make the salad up to one day ahead and refrigerate, but let it come fully to room temperature before serving. Freshen the flavor of the salad by adding more sliced fresh basil and a squeeze of orange and lime juice just before serving.