CSS selectors are the way to check if an element is pinned or if it is a retweet. Check the site for more reliable selectors. Try inspect cases where your selector doesn't work and try new selectors.
Generally speaking you can't. If your target is to catch a new tweet a few seconds after it was posted, it is mission impossible. Just use the API.
Use proxies, rotate user agents (less important), try undetected_chromedriver. Automate retries - catch the moment when twitter shows you 'Something went wrong' and restart browser, ideally using new proxy and user agent. This all will make it possible to catch the new tweet in a few minutes. But if you send requests to twitter every few seconds 24/7 they will block you at some point.
BeautifulSoup doesn't make requests, it only helps you parse the response. Requests themselves are usually made with a default requests library. Scrapy is an alternative, but it is not much better at preventing bot detection.
Rotate proxies, obviously do not scrape from a cloud provider IP. Sites are much more likely to block requests from Linux OS. And do not try to send too many requests from the same IP.
P.S. Are you going to keep you computer all the time online to catch the new tweets? Or you plan to run the code from some server? The second option is problematic.