Well, just try increasing the amount of time for implicitwait(). Even though Thread.sleep() works with 2s wait, something more than that should definately work for implicitwait(). Imlicitly wait for 10s and if the element is found within that time, then you won't have any problem.
But besides, there are 2 types of waits: Explicit wait and Implicit wait. Explicit wait works like this:
WebDriverWait.until(WebElement("textbox").isVisible());
But, Implicit wait works like this:
driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);
So, there is no funny reason any of this might not work. Try it out once.